mysqlリアルエスケープストリング
-
30-09-2019 - |
質問
AddSlashesとmysql_real_escape_stringを使用して、PHPログインへの入力を消毒しようとしていました。使用 addslashes
作品、しかし mysql_real_escape_string
しない。
ここに、私が正しくログインできるものの例があります:
$user = addslashes($_POST['user']);<br/>
$password = addslashes($_POST['password']);
そして、これは次のとおりです。
$user = mysql_real_escape_string($_POST['user']);<br/>
$password = mysql_real_escape_string($_POST['password']);
また、私の他のフィールドにはアポストロフィが含まれています。 DBのエントリが逃げられていないため、AddSlashesを使用する場合、何も返されません。使っているのだろうかと思っていました mysql_real_escape_string
これを修正できますが、方法はわかりません。
解決
AddSlashesの代わりに、常にmysql_real_escape_stringを使用してください。データベースに接続されていることを確認してください 前 それ以外の場合は実行するとエラーが発生します。
他のヒント
mysql_real_escape_string()は%と_を逃がしません。これらは、Like、Grant、またはRevokeと組み合わせると、MySQLのワイルドカードです。
そして、最も重要なことは、ユーザーの入力を信頼しないことです。
したがって、セキュリティを向上させるには、htmlspecialcharsとsprip_tagsを使用してください。
ユーザーが入力する場合があります '
, 、このシンボルですが、SQLは別の方法として扱い、テーブルに挿入することを許可しないようにします。この種のエラーを回避するためにMySQL Real Escaper Stringを使用するようにユーザーを制限することはできません
注:これを実装すると、データベースに接続する必要があります。