0

こんにちは、スクリプトのバグを修正しようとしています。問題は、get クエリが余分な文字を使用しても機能することです。

したがって、edit.php?id=1機能し、機能しますedit.php?id=1hello(明らかにそうすべきではありません)。何が起こっていますか?

$idtoedit = mysql_real_escape_string($_GET["id"]);

//Check if ID exists
$doesidexist = mysql_query("SELECT `id` FROM Data WHERE `id` = \"$idtoedit\"");
if (mysql_num_rows($doesidexist) == 0) {
    die("<div class=\"alert alert-error\"><h4 class=\"alert-heading\">Error</h4><p>ID does not exist.</p><p><a class=\"btn btn-danger\" href=\"javascript:history.go(-1)\">Go Back</a></p></div></div></body></html>");
 }
4

2 に答える 2

1

これは、文字列を数値に変換するときの MySQL の「なんでもあり」の入力処理によるものです。

作成する SQL クエリは、入力を文字列 (その"周りに s) として渡すため、左側の列に=数値型 (id例の列)がある場合、mysql はそれを数値に変換しようとします。 .

詳細については、マニュアルのこのセクションを確認してください。

于 2013-08-11T17:17:32.877 に答える