0

提出されたデータをSQL攻撃から保護するために次のことを行っています

$myusername = stripslashes($myusername);
$myusername = mysql_real_escape_string($myusername);
$mypassword = stripslashes($mypassword);
$mypassword = mysql_real_escape_string($mypassword);
$confirm_password = stripslashes($confirm_password);
$confirm_password = mysql_real_escape_string($confirm_password);
$fullname = stripslashes($fullname);
$fullname = mysql_real_escape_string($fullname);

これを行う簡単な方法はありますか?これは登録フォームであり、保護するフィールドが多数あります。

4

2 に答える 2

1

これを行う簡単な方法はありますか?

はい、まず第一に、自動スラッシュを無効にするので、それらを取り除く必要はありません。それはすでにコードを減らします:

$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$confirm_password = mysql_real_escape_string($confirm_password);
$fullname = mysql_real_escape_string($fullname);

その後、いわゆるパラメーター化されたクエリを使用する場合は、これ以上呼び出す必要はありませんがmysql_real_escape_string、変数を安全に使用できます。

mysql_real_escape_stringデータベースリンクを提供していないため、の安全でないバリアントを使用していることに注意してください。

同様に参照してください:PHPでSQLインジェクションを停止するための最良の方法

于 2012-04-10T18:10:29.250 に答える
0

はい、PHPのPDOオブジェクト(PHPデータベースオブジェクト)を使用して、プリペアドステートメントを作成します。

$dbh = new PDO('mysql:dbname=YOURDB;host=localhost', 'user', 'pass');
$sql = 'SELECT name FROM user WHERE id = :id';
$sth = $dbh->prepare($sql);
$sth->execute(array(':id' => 25);
$result = $sth->fetchAll();

それはまたあなたがあなたの人生をはるかに楽にするためにあなたがPDOラッパーを探すことができることを知るのを助けるかもしれません。

于 2012-04-10T18:13:51.173 に答える