-1

まず、私の質問を読んでいただきありがとうございます。

この間、私のWebサイトで実行されている「悪意のある」URLクエリがたくさんあるのを見て、私のphpスクリプトがSQLインジェクションに対して脆弱であるかどうかを恐れていました。

私のURL構造は次のとおりです。http://mywebsite.com/post.php? id = 7573投稿から必要なすべての情報を取得するには、URLの投稿IDを使用します。

このIDを「クリア」するには、次の方法を使用します。

$id = mysql_real_escape_string ($id);
$safeID = intval(preg_replace("/[^0-9]/", "", $id));
$sql = "SELECT * FROM web_content WHERE state = '1' AND ID = '$safeID'";
$res = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_assoc($res);
.........

データベースに送信されるsafeIDが本当に「SAFE」であるかどうかを知る必要があります。

ありがとうございました

4

3 に答える 3

2

使用するのと同じくらい簡単かもしれませんintval($id)

于 2012-11-07T15:29:22.730 に答える
1

ですが、すでにすべての「悪い」文字をエスケープしているので、これを行うpreg_replace必要はありません。mysql_real_escape_string

于 2012-11-07T15:28:52.773 に答える
0

安全です。intvalは整数のみを返すため、mysql_real_escape_stringとpreg_replaceも必要ありません。

ただし、intvalは失敗すると0を返すことに注意してください。したがって、$idに対して「bla」を受け取ることは「0」を受け取ることとまったく同じです。それがロジックに問題がない場合は、心配する必要はありません。

于 2012-11-07T15:33:04.403 に答える