2009-07-23 6 views
2

WMDMarkdownで過去2日間働いていますが、セキュリティのあるストックデータの解決策が見つかりません。私はあなたのサイトにHTML/XML <コード>(WMD付き)を投稿できるようにしたいと思います。WMD Markdownとサーバー側

現在のところMarkdown形式のデータを保管していますが、JavaScriptを無効にするとXSSを簡単に押すことができます。私がstrip_tagsまたはhtml_entitiesすべてのデータ私はユーザーHTML/XML <コードを失う>。どうしたらいいですか?

私の意見では、私はhtml_entitiesのコードをpre/preの間に入れる必要がありますが、どうしたらいいですか?私のデータはMarkdownにあります。

<img src="javascript:alert('xss');" /> 

答えて

2

あなたのHTMLを「きれい」にするには、あなたがHTML Purifier

のようなツールを使用することができ、基本的に、それが/どのタグを指定することができます:私はXSSの属性を禁じるために何を行うことができ、後

属性は許可され、属性のみが保持されます。

また、有効な(X)HTMLコードをouputとして生成します。これは素晴らしいことです。

test <img src="javascript:evil();" onload="evil();" /> 
test <img src="http://www.google.com/a.Png" /> test2 
:あなたはところで;-)

例えば、ほぼ正確にあなたが投稿XSSいる例があるdemo pageで見ることができる

、あなたはこのようないくつかのHTMLを試すことができます

出力は次のとおり

test test <img src="http://www.google.com/a.Png" alt="a.Png" /> test2 

XSSとimgタグが維持されていません。もう一つは持っている。 alt属性が追加され、標準に準拠しています。

それはすべてあなたの問題を解決しないかもしれませんが、あなたは、入力HTMLにユーザーに可能性について与えている場合、それは間違いなく便利はuのための

+0

おかげで(私が?「それがなくてはならないのです」と言ってあえて)されます応答。私はhtml浄水器と他の "サニタイザー"を知っていました。実際の問題は、htmlの基本レイアウト(wmdによる)とユーザーが挿入したhtmlをloogに入れないためにはどうすればよいのですか?..

+1

基本レイアウト>単純なタグの場合は、HTMLPurifierの "allowed"彼らは取り除かれません。特別なタグの間にHTMLを挿入したい場合は、この回答を見てください:http://stackoverflow.com/questions/1155443/process-a-block-of-html-ignoring-content-within-specific-tags/ 1155530#1155530;それとHTMLPurifierを混在させることで、あなたは何を望むのでしょうか? –

関連する問題