1

重複の可能性:
PHP mysql_real_escape_string() -> stripslashes() 複数のスラッシュを残す

調査へのユーザー入力を受け入れ、その回答を MySQL データベースに保存するシステムがあります。
このデータベースに配置する前に、それを実行して、mysql_real_escape_string()インジェクションが不満でないことを確認します。

残念ながら、このコンテンツをテキストボックスでクライアントに出力すると(入力されたとおり)、一重引用符が引用されます/ \...すべてエスケープされます-要求したことは知っていますが、このように製品を提供することはできません-どうすればよいですか「2\3, 1\2」などの入力を失う危険を冒さずに、これらを逆にします。

消毒する良い方法はありますか?

4

2 に答える 2

2

入力がサニタイズされていることを確認するためのはるかに優れた方法があります。まったくエスケープしないでください。代わりに、 PDOで準備されたクエリを使用してください。

于 2012-10-22T02:05:55.553 に答える
0

MySQL 文字列に のようなものが含まれている場合、MySQLmyfield="Stafford\'s webhost sucks"は、バックスラッシュが二重エスケープされている場合を除き、バックスラッシュではなくエスケープ文字として意図されていることを認識しています。

エスケープ文字であるはずのバックスラッシュがデータベースに表示される場合、文字列が複数回エスケープされていることを意味します。これは、コード内にあるか、非推奨のマジック クォート機能が有効になっている場合に発生する可能性があります。マジック クォートは php.ini でオフにすることができます: https://stackoverflow.com/a/1201003/281469

于 2012-10-22T02:50:59.083 に答える