2012-05-11 41 views
0

我開始考慮保護SQL注入的輸入。我讀過PDO和mysqli,並將使用這些技術。在我研究SQL注入防護時,我想到了一種技術。每當我有用戶輸入時,我都可以掃描輸入字符串並搜索「'」或「DROP」的出現位置,如果字符串包含這些字符,那麼我就不能繼續。這種技術會阻止很多SQL注入嗎?PHP SQL注入阻止技術

感謝您的幫助。

+0

單獨使用PDO將防止任何注入,因爲您要使用預準備語句。根本沒有必要進一步做任何事情。 – ccKep

+1

防止SQL注入這裏描述的最好方法http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – itsmeee

回答

3

只需使用PDO或SQLi即可。

如果使用正確且符合預期,兩者都會停止;使用像停止DROP這樣的措施是愚蠢的 - 想象一下,如果有人輸入'dropbox',例如?

+0

實際上既不會完全停止它,準備好的語句和數據驗證必須執行,即使這樣也不總是100%安全,如果不是所有應用部分都遵循這些要求,仍然有可能。 – mhvvzmak1

4

最好是採用經過嚴格測試的方法,而不是嘗試實現自己的方法。

您希望的解決方案的問題是,當SQL爲刪除表添加新符號時會發生什麼?或者如果他們使用「截斷」呢?這不是萬無一失的。

2

你應該逃避你的意見,並考慮使用預先準備的語句。這將刪除幾乎所有的SQL注入漏洞。掃描特定的詞語是一種可怕的做法,因爲它通常會使合法用戶感到不安,並且不會阻止確定的黑客。

-1

的最好辦法是驗證對嚴格的模式所有的用戶輸入,以確保沒有用戶數據異常,隨着PDO準備語句 - 這種方式,您還可以防止XSS但它通常是有益的消毒所有用戶生成的輸出,以防萬一您沒有正確驗證某些內容並且用戶能夠執行惡意代碼。

+0

爲什麼這個答案被投下來?顯然有些業餘愛好者認爲這是驗證數據完整性並確保安全操作的真正方法,所有主要的開發都使用這種模式。 – mhvvzmak1