PHP登録検証及びフォーム防犯

815 ワード

POST伝達パラメータ
sql文
$sql = "SELECT * FROM {$this->table} WHERE admin_name = '$username' AND password = '$password' LIMIT 1";

万能パスワード:
xxx’or’1 

原理:sql文の修正防止:パスワードmd 5暗号化
万能ユーザー名:
 xxx’or1#

原理、#後のすべては実行しません
まとめ:万能ユーザー名とパスワードには特殊な記号、単一引用符が使用されています.単一引用符が意味を失うことを防止するにはaddcslashes:単一引用符がエスケープされます.すべての呼び出しフォーム情報はエスケープされます.
function deepslashes($data) {
    if (empty($data)) {
        return $data;
    }
    is_array($data) ? array_map('deepslashes', $data) : addcslashes($data);
}

GET伝達パラメータ
sql文:
delete from cz_category cat_id = 1

攻撃パラメータ:
1 or 1

通常はidが強制的に整形に変換されるか、出力変数+0が整数に暗黙的に変換される