簡體   English   中英

這是防止SQL注入的好方法嗎

[英]Is this a good way for SQL injection prevention

我在其他網站和論壇上也讀過很多有關如何防止SQL注入的內容。 唯一的問題就是,這使我對將內容寫入數據庫時​​如何保護您的網站的方式感到非常困惑。

我正在創建一個Schol項目,其中一些來自用戶的輸入將被寫入數據庫,我目前正在通過javascript檢查它們是否包含iligal char。 然后我使用ajax激活我的控制器,在模型中使用查詢將其發送回視圖。

但是,讓我們繼續我的問題。

如果我首先使用javascript(客戶端)驗證輸入,然后使用PHP驗證服務器端。 如果我首先在php中檢查輸入是否包含* *``> <這樣的非法字符,那就是這種事情。 您在查詢中將用於從數據庫中獲取信息的內容。 然后逃脫whitescpases,因為我不想在用戶輸入時在網站上放置空格。

然后在輸入上使用mysqli_real_escape_string() 然后將其發送到如下所示的查詢。

/**
* @param string
* @param string
* @return mixed
*/
public function updateUsername($oldUsername, $newUsername) {
    return $this->_db->query("UPDATE `users` SET `username` = :new_username WHERE `username` = :old_username",
        [':new_username' => $newUsername,':old_username' => $oldUsername]);
}

所以1>使用javascript檢查
2>通過php在char上進行檢查,例如* <>'#
3>使用mysqli_real_escape_string()
4>轉到PDO查詢

這是假裝SQL注入的好方法,我真的不想讓我的學校項目隨SQL注入一起直播。

格蕾茲

也非常感謝您閱讀我的長篇小說

  1. 不能。禁止字符會阻止人們使用它們,並且經常有充分的理由使用它們。 如果字符沒有必要出現在數據中,則可以對其進行過濾以幫助使數據保持理智。 請勿將其作為安全措施。
  2. 同上
  3. 否。參數化查詢更好。
  4. 是的,但是不能與mysqli_real_escape_string結合使用,因為您不應該混合使用API​​,如果同時使用這兩個API,則會使轉義字符加倍,並在數據中添加\\字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM