-2

保護なしで、次の行があります。

$check = mysql_query("SELECT * FROM school_users WHERE username = '".$_POST['username']."'")or die(mysql_error());

私のphpで。このコードを挿入するにはどうすればよいですか? 私は他の多くのことを試しましたが、注射には何もうまくいかないようです. mysql_query にはこれに対する自動キャッチがありますか?

4

2 に答える 2

2

php.iniオプションをチェックインします。SQL を簡単に挿入magic_quotes_gpcするには、 に設定する必要があります。0次に、コードの挿入を試みることができます。ブラウザーでRESTプラグインを使用して、それを実現できます。username本体内の値として、たとえば次のように使用します。

username: "' OR 1=1; --"

これにより、次のようなクエリが生成されます。

SELECT * FROM school_users WHERE username = '' OR 1=1; --

これは常に真であり、school_usersテーブルからすべての行を返します。

于 2013-02-09T22:08:56.640 に答える
2

例による SQL インジェクション攻撃を参照してください。これは PHP 固有のものではありませんが、さまざまな一般的な攻撃の例を示して説明しています..

「SQL インジェクション」は、検証されていない/サニタイズされていないユーザー入力の脆弱性のサブセット (「バッファ オーバーフロー」は別のサブセット) であり、アプリケーションが意図しない SQL コードを実行するよう説得することを目的としています。アプリケーションが単純にその場で SQL 文字列を作成して実行している場合、実際に驚きをもたらすのは簡単です。

他の人が指摘しているように、「マジック クォート」などの環境要因が影響を与える可能性がありますが、SQL インジェクションを軽減する唯一の信頼できる方法は、実証済みのコーディング プラクティスを使用することです。PHP で SQL インジェクションを防ぐにはどうすればよいですか? を参照してください。そのような攻撃を軽減するアプローチのために。

于 2013-02-09T22:09:39.383 に答える