2

addlashesと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のかわかりません。

4

3 に答える 3

12

addlashesの代わりに常にmysql_real_escape_stringを使用してください。データベースを実行する前に、データベースに接続していることを確認してください。接続していないと、エラーが発生します。

于 2011-01-06T23:52:49.447 に答える
1

mysql_real_escape_string()は%と_をエスケープしません。これらは、LIKE、GRANT、またはREVOKEと組み合わせた場合のMySQLのワイルドカードです。

そして最も重要なことは、ユーザー入力を信頼しないことです。

したがって、セキュリティを強化するためにhtmlspecialcharsとstrip_tagsを使用してください。

于 2011-04-06T09:30:57.717 に答える
1

ユーザーがこの記号を入力する場合がありますが'、SQLは別の方法として扱われ、テーブルへの挿入を許可しません。この種のエラーを回避するためにMySQLの実際のエスケープ文字列を使用するようにユーザーを制限することはできません。

注:これを実装する場合は、データベースに接続する必要があります。そうでない場合は機能しません

于 2012-12-03T07:11:22.130 に答える