2

私のサイトの管理領域では、データベースに入力されるフォーム入力を取得するときにmysqli_real_escape_stringを使用しています。正常に動作しますが、スクリプトの挿入を防ぐことはできません。つまり、次のようなスクリプトをパススルーできます。

<script>alert('hello');</script>

悪意のある管理者が厄介なものを注入するのを防ぐために、これに加えて何を使用しますか?

  • htmlentities()
  • strip_tags()
  • htmlspecialchars()

入力データにhtmlが必要ないバックエンドフォームでフォーム入力をサニタイズする適切な方法は何ですか?私は混乱しています?

4

5 に答える 5

2

htmlentities()データをhtmlspecialchars()出力するときに使用されます。エンコーディングとエスケープは異なります。

HTMLが必要ない場合はstrip_tags()、HTMLタグを削除しhtml*、コンテンツを出力するときに使用することをお勧めします。

また、MySQLPDOへの切り替えを検討することもできます。これは、クエリを実行するためのはるかに好ましい安全な方法です。

于 2011-04-27T05:34:35.853 に答える
0

適切な答えは、アプリケーションに大きく依存します。

多くの管理システムでは、管理者が HTML を操作する方法が必要です。ただし、一部の HTML は他の HTML よりも危険です。

JohnP が言ったように、strip_tags()は便利です。2 番目のパラメーターを使用すると、特定の無害なタグ ( または など) を明示的に許可し、他のもの ( または など) を取り除くことができるからです。

それ以上の洗練が必要な場合は、より慎重な分析を行い、ニーズに合わせたソリューションを考え出す必要があります。(ヒント: HTML タグの照合に正規表現を使用するソリューションを使用する場合は、おそらく一歩下がったほうがよいでしょう)

于 2011-04-27T05:54:53.783 に答える
0

を使用する必要がありますhtmlentities()

于 2011-04-27T05:35:09.277 に答える
-1

magic_quotesPHP 4以下またはPHP 5.2以下を使用している場合は、関数を使用してサニタイズできます。

于 2011-04-27T07:46:04.300 に答える