2016-04-01 32 views
1

從安全的角度來看,PDO準備的語句是否足以防止mysql相關的安全問題?或者我也應該是角色驗證服務器端。目前我正在使用pdo準備語句和客戶端JavaScript表單檢查(但據我瞭解,JavaScript可以禁用)。PDO準備好的語句是否足夠

最親切的問候,

克里斯

+1

您仍然需要服務器端驗證。 –

回答

0

實際上,有三個方面的問題在這裏,每一個都需要不同的方法。

數據驗證涉及驗證提供了所有必需的表單參數,它們是可接受的長度並且具有正確的內容類型。如果您沒有可信任的ORM,則需要自己完成此操作。

數據轉義涉及以避免SQL注入的方式將數據插入數據庫。準備好的陳述是防止這種情況的一個很好的工具。

數據表示涉及避免XSS問題,其中您顯示的內容可能被誤解爲腳本或HTML。這裏至少需要使用htmlspecialchars

請注意,如果您使用development framework,則所有這三個問題都可以解決。有一個很好的看看是Laravel,因爲文檔是全面的,並讓你對這一切如何組合起來,但也有許多其他人可以選擇。

0

您可以直接將數據傳遞到您的數據庫中,但如果用戶提交的數據是閃避,或者它可能無效,該怎麼辦?他們可能會提交一封信,而不是一個號碼,或者該電子郵件地址可能包含無效字符。

您可以使用PHP的內置Filters來增強服務器端的驗證。

您可以使用這些來清理和驗證您的數據。

Validation filters檢查用戶提供的數據是否有效。例如,電子郵件是否有效?這個數字實際上是一個數字嗎?文本是否匹配某個正則表達式?

Sanitization filters基本上刪除給定數據類型的無效字符。即刪除不安全的字符,刪除無效的電子郵件/ URL字符,刪除非數字字符。

有一個bunch of helper methods可以淨化和驗證單個值,數組和關聯數組,以及_GET_POST數組。

Nettuts有關於此問題的一些很好的教程herehere