10

簡単な ASP.NET MVC ブログ アプリケーションがあり、読者がブログ投稿にコメントを追加できるようにしたいとします。あらゆる種類の XSS シェナニガンを防止したい場合は、すべてのコメントを HTML エンコードして、レンダリング時に無害になるようにすることができます。ただし、ハイパーリンク、太字、斜体などの基本的な機能が必要な場合はどうすればよいでしょうか?

StackOverflow がWMD Markdown Editorを使用していることは知っています。これは、 HTML と Markdownの両方をサポートしているため XSS 攻撃を受けやすいという事実がなければ、私が達成しようとしていることに最適な選択肢のようです。

4

7 に答える 7

8

エディタの使用を検討していない場合は、OWASP の AntiSamyを検討してください。

ここで例を実行できます: http://www.antisamy.net/

于 2009-01-15T15:21:22.860 に答える
3

どのくらいの HTML をサポートしますか? 太字/斜体/基本的なものだけですか? その場合、それらをマークダウン構文に変換してから、残りの HTML を取り除くことができます。

ストリッピングは、保存する前にサーバー側で行う必要があります。SQL の脆弱性やその他の不要なものをチェックするときは、サーバーでも入力を検証する必要があります。

于 2009-01-15T00:15:10.913 に答える
2

ブラウザで行う必要がある場合:http ://code.google.com/p/google-caja/wiki/JsHtmlSanitizer

于 2009-01-16T01:43:59.517 に答える
1

ジェフのコードを使ってみませんか? http://refactormycode.com/codes/333-sanitize-html

于 2009-01-15T00:41:04.557 に答える
1

私はFCKEditorに投票しますが、返される出力に対しても追加の手順を実行する必要があります

于 2009-01-15T00:47:19.613 に答える
1

マークダウン構文のみを送信することをお勧めします。フロント エンドでは、クライアントはマークダウンを入力して HTML プレビュー (SO と同じ) を持つことができますが、マークダウン構文のサーバー側のみを送信します。次に、それを検証し、HTML を生成し、エスケープして保存します。

それが私たちのほとんどのやり方だと思います。どちらの場合でも、マークダウンは、構造化された HTML コードを書くことを軽減し、方法さえ知らない人に力を与えるために存在します。

HTML で何か特定のことをしたい場合は、CSS の継承 '.comment a { color: #F0F; ' を使用して微調整できます。}'、フロント エンド JS を使用するか、生成された HTML を保存する前にマークダウンを解析してトラバースします。

于 2009-01-15T00:20:53.100 に答える
0

HTML ホワイトリストを使用して、特定のタグを引き続き使用できるようにすることができますが、それ以外はすべてブロックされます。

これを行うことができるツールがあります。SO はSlough がリンクしたコードを使用します。

于 2009-01-15T00:47:07.243 に答える