考慮以下代碼:PHP - 當過濾用戶輸入
// store the $name into a database
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
// already encrypted password (client-side) and will be salted or hashed again to store it into DB
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
// just to check if the $lang is on the $language array i.e. in_array($lang, $language)
$lang = filter_input(INPUT_POST, 'language', FILTER_SANITIZE_STRING);
// just to echo something
$sth = filter_input(INPUT_POST, 'sth', FILTER_SANITIZE_STRING);
在這裏,我試圖描述的一些情況。並且在每種情況下,我篩選了用戶輸入(在某些情況下不需要)。我的問題是何時過濾用戶輸入,因爲它似乎過濾用戶輸入並不總是必要的。
您應該*總是*過濾用戶輸入。永遠不要相信他們的輸入。請使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –
對於SQL查詢,您應該瞭解[PDO](http://php.net/manual/en/pdo.prepared-statements)的[prepared](http://en.wikipedia.org/wiki/Prepared_statement)語句。 php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php),並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo的.html)。 –
它不是正確的問題要求在stackoverflow,請刪除它 –