私は、ユーザーが挿入する可能性のある望ましくないタグに関してユーザーが入力したデータを管理するための最良の方法を見つけようとしています。
- strip_tags() -タグは削除され、データベースには挿入されません
- タグはデータベースに挿入されますが、そのフィールドを読み取ってユーザーに表示する場合は、htmlspecialchars()を使用します。
何が良いですか、そしてこれらのいずれかに不利な点はありますか?
よろしく
私は、ユーザーが挿入する可能性のある望ましくないタグに関してユーザーが入力したデータを管理するための最良の方法を見つけようとしています。
何が良いですか、そしてこれらのいずれかに不利な点はありますか?
よろしく
これは、優先順位によって異なります。
htmlspecialchars()
。出力を表示します(より洗練されたものではない場合)strip_tags()
は、データベースに貼り付ける前に使用してください。これにより、保存する必要のあるデータの量が減り、画面にデータを表示するときの処理時間が短縮されます。タグはデータベースに挿入されますが、そのフィールドを読み取ってユーザーに表示する場合は、htmlspecialchars()を使用します。
これ。通常、ユーザーが「未満」の記号やアンパサンドを入力して、ページにそのように表示できるようにする必要があります。htmlspecialchars
すべてのテキストからHTMLへの出力ステップ(テキストがユーザー入力から直接、データベースから、または完全に他の場所からのものであるかどうか)は、これを達成するための正しい方法です。入力をいじることは、出力エンコーディングの問題に対処するためのまったく適切な戦術ではありません。
もちろん、SQL文字列にテキストを入れるには、別のエスケープ(またはパラメータ化)が必要になります。
ユーザー入力を保護するために講じられる対策は、データがどのコンテキストで使用されているかに完全に依存します。例えば:
mysql_real_escape_string()
もきちんと機能します。上記の最後のポイントは次のポイントにつながります。多くの人は、元の入力を常に維持する必要があると感じています。これは、後でデータを別の方法で使用することを決定した場合に非常に意味があります。たとえば、新しいコンテキストではHTMLタグは大した問題ではありません。また、サイトが何らかの形で危険にさらされている場合は、与えられた正確な入力の記録があります。
HTMLページに表示することを目的としたユーザー入力のHTMLタグに特に関連します。ユーザーがHTMLタグを入力する理由が考えられる場合は、単にそれらをエスケープします。そうでない場合は、表示する前にそれらを取り除きます。