2012-03-22 7 views
0

は、私がブログを構築していますし、現在管理パネル仕上げイムことができます。XSSを防ぐが、すべてのHTMLタグが

私はそれを管理する予定です主になりますので...私は

<ul> 
    <li>test</li> 
    <li>test</li> 
</ul> 

を入力したときに私の順不同リストを表示だけでなく、念のためXSSタグを防ぐことができますことを確認するには...

私はそれをどのように行うことができますか?

解決策は、機能を作成し、ul,olimgなどのタグを置き換えることができますか?

+0

コンクリート答えは使用するWebプログラミング言語に依存します。それがJavaの場合は、[Jsoup](http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer)を使用してください。言及する質問を編集し、それに応じてタグを付けてください。 – BalusC

+0

@BalusCはそれを逃しました、更新された質問...私はPHPを使用しています。 – fxuser

+2

[HTML Purifier](http://htmlpurifier.org/)を使用できます。 – ComFreek

答えて

1

チェックこのURL - http://refactormycode.com/codes/333-sanitize-html

別の有用な問題に関するスレッドとどのようにこれを処理するためにあります - HTMLがにある可能にしながら What is the best way to store WMD input/markdown in SQL server and display later?

+1

最初のURLはStackOverflowのために構築されたHTMLサニタイザですが、タグの小さなサブセットのみを許可し、 "すべてのhtmlタグ"を許可するOPの望みを満たしていないことに注意してください。 –

+0

また、あなたが入力としてマークダウンを使用したい場合は、チェックアウトhttp://michelf.com/projects/php-markdown/ –

+0

@colin私はサンプルとしてメソッドにユーザーを指摘し、OPは、それがために使用することができますどのように見ることができますXSSタグを取り除き、拡張/再利用してください。 –

1

はXSSに対処するための標準的な方法は:

  1. (実際の)HTMLパーサーでHTMLを実行する
  2. ホワイトリストにない要素または属性を削除するeサードパーティのホワイトリストを出発点として、あなたが知らないJSを注入する手段がないことを確認するために追加する追加の要素/属性についての調査を行います)。
  3. 正気は

詳細は、使用している言語によって異なりますDOMからクリーンなHTMLを生成する任意のURIを確認してください。あなたが探しているものを

+0

正規表現ではなく '(実際の)HTMLパーサ'に対して+1! – ComFreek

1

は、HTMLの消毒剤です。これらは正しく書くのが非常に難しいので、既存のライブラリを見てください。 PHPについては、HTML Purifierをご覧ください。

適切なXSS保護は、HTMLのサニタイズ以上のものを必要とします。オープンWebアプリケーションセキュリティプロジェクト(OWASP)は、一緒にXSS攻撃を回避するための標準的なガイドを入れている:

XSS (Cross Site Scripting) Prevention Cheat Sheet

関連する問題