從安全的角度來看,PDO準備的語句是否足以防止mysql相關的安全問題?或者我也應該是角色驗證服務器端。目前我正在使用pdo準備語句和客戶端JavaScript表單檢查(但據我瞭解,JavaScript可以禁用)。PDO準備好的語句是否足夠
最親切的問候,
克里斯
從安全的角度來看,PDO準備的語句是否足以防止mysql相關的安全問題?或者我也應該是角色驗證服務器端。目前我正在使用pdo準備語句和客戶端JavaScript表單檢查(但據我瞭解,JavaScript可以禁用)。PDO準備好的語句是否足夠
最親切的問候,
克里斯
實際上,有三個方面的問題在這裏,每一個都需要不同的方法。
數據驗證涉及驗證提供了所有必需的表單參數,它們是可接受的長度並且具有正確的內容類型。如果您沒有可信任的ORM,則需要自己完成此操作。
數據轉義涉及以避免SQL注入的方式將數據插入數據庫。準備好的陳述是防止這種情況的一個很好的工具。
數據表示涉及避免XSS問題,其中您顯示的內容可能被誤解爲腳本或HTML。這裏至少需要使用htmlspecialchars
。
請注意,如果您使用development framework,則所有這三個問題都可以解決。有一個很好的看看是Laravel,因爲文檔是全面的,並讓你對這一切如何組合起來,但也有許多其他人可以選擇。
您可以直接將數據傳遞到您的數據庫中,但如果用戶提交的數據是閃避,或者它可能無效,該怎麼辦?他們可能會提交一封信,而不是一個號碼,或者該電子郵件地址可能包含無效字符。
您可以使用PHP的內置Filters來增強服務器端的驗證。
您可以使用這些來清理和驗證您的數據。
Validation filters檢查用戶提供的數據是否有效。例如,電子郵件是否有效?這個數字實際上是一個數字嗎?文本是否匹配某個正則表達式?
Sanitization filters基本上刪除給定數據類型的無效字符。即刪除不安全的字符,刪除無效的電子郵件/ URL字符,刪除非數字字符。
有一個bunch of helper methods可以淨化和驗證單個值,數組和關聯數組,以及_GET
和_POST
數組。
您仍然需要服務器端驗證。 –