質問

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を使用するようにユーザーを制限することはできません

注:これを実装すると、データベースに接続する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top