ユーザーが生成したテキストを Web ページに安全に書き出すにはどうすればよいですか?
エスケープする必要がある文字の完全なリストはありますか?
",+,: - 文字はおそらくエスケープする必要がありますが、何をする必要があるかについては、おそらくより包括的なリストがあります。
ページをリダイレクトしたり混乱させたりするJavaScriptやその他のものを挿入するエクスプロイトを行う可能性について考えています。若い世代は創造性が豊かです。
(同様の質問に対する自分の回答をコピーする- これが悪い習慣と見なされる場合は、私に警告してください。)
クロス サイト スクリプティング防止に関する OWASP チート シートを参照してください。要約すると、次のようになります。
(ただし、この要約に頼るのではなく、ドキュメント全体を読んでください...)
この脆弱性は XSS 攻撃と呼ばれます。さまざまなプログラミング言語には、自動的にエスケープを行う機能があります。たとえば、php では、htmlspecialchars()
生でレンダリングされるユーザー テキストをエスケープするために呼び出される関数を使用できます。他の言語にも同様の機能があります。
ユーザーが html のサブセットのみを使用できるようにしたい場合 (つまり、ユーザーが投稿をある程度フォーマットすることを許可されているフォーラムがある場合など)、これはさらに複雑になり、実際にテキストを解析する必要があります。何を許可し、何を許可しないかを決定します。これを行うさまざまなエンジンがあります (たとえば、SO が使用するマークダウン)。
<
、>
、&
およびをエスケープ'
するだけで十分です。
サーバー側の言語に応じて、これには特別な方法があります。