0

重複の可能性:
PHPのmysql_real_escape_stringとMySQLインジェクション

これは問題のキャラクターです:

\x1A

なぜそれが脅威をもたらすのですか、そしてそれは何ですか?グーグルはそれが制御文字だと言っていますが、特にデータをエスケープするという文脈では、それが何を意味するのかわかりません。

ありがとう

4

1 に答える 1

3

0x1Aは、DOS 時代に EOF (ファイルの終わり) マーカーとして使用されていた ctrl-z です。最新のデータベースでは問題にならないはずですが、古い dos-days SQL パーサーを通過して余分なクエリ ステートメントをこっそり盗み出すために使用された可能性があるため、次のような結果になります。

UPDATE scores SET points=points+1
ctrl-z
DROP TABLE scores

愚かなパーサーは ctrl-z で停止し、「ほら、ファイルの終わりだ」と考えます。文字列全体が DB に渡され、それが「スマート」データベースである場合は、ctrl-z を無視して、喜んでドロップ コマンドを実行します。

于 2012-11-30T21:58:51.720 に答える