2008-09-15 7 views
1

Webページでリッチテキストエディタを使用しています。 .NETにはHTMLタグを投稿できない機能があるので、JavaScriptスニペットを追加して角括弧を変更し、ポストの前に文字のエイリアスを設定しました。エイリアスはサーバー上で必要な角括弧で置き換えられ、データベースに格納されます。 XSSを脇に置いて、この問題を解決する一般的な方法は何か。 (すなわち、より良い方法はありますか?)ブラウザWYSIWYGベストプラクティス

あなたはXSSのコメント(クロスサイトスクリプティング)を持っている場合は、私が誰かを助けること確信しています。

答えて

3

実際には、「機能」をオフにする方法があります。これにより、ユーザーは任意の文字を投稿することができ、Javascriptを使用して文字を別名に変換する必要はありません。 disabling request validationのこの記事を参照してください。つまり、あなた自身の検証をする必要があることを意味しますが、あなたの投稿の音から、それはあなたがとにかくやりたいことです。ページごとに無効にするには、the instructions hereに従ってください。

1

最初のコメントは、JavaScriptを使用して山括弧を変更しないようにすることです。これをバイパスするのは、ブラウザでJavaScriptを無効にするのと同じくらい簡単です。ほとんどすべてのサーバー側言語には、HTML文字をエンティティの対応するものに変換するユーティリティメソッドがあります。たとえば、PHPはhtmlentities()を使用していますが、.NETには同等のユーティリティメソッドがあると確信しています。少なくとも、角括弧、かっこ、二重引用符の代わりに正規表現を使うことができます。

3

私は行くための最も安全な方法は、ユーザーが自分のWISYWIGとタグを作成することができないようにすることだと思います。おそらく、このサイトやavailable here.のようなマークダウンエディタのようなものを使うのも別のアプローチでしょう。

また、リクエストで送信されてからマークアップを停止する必要がありますPageディレクティブのvalidateRequest =真を維持し、あなたはもちろん、それが起動したとき、このエラーを処理する必要があります。人々はいつでもTamper dataのようなfirefox拡張を使ってリクエストにタグを注入できますが、ValidateRequest = trueは少なくともASP.NETがそれを受け入れるのを止めるべきです。

最近、ジェフがXSS攻撃に関するストレートフォワードポストを作成しました。また、クッキーをHttpOnlyにすることについても説明しています。これは、Cookieの盗難に対する半防御です。がんばろう!

+1

ええ、しかし、Markdownを持つ唯一の問題は、それが明示的に*明示的にいくつかの「危険な」HTMLタグを削除する方法 –

+0

それはかなりタフになりた...値下げと一緒に* HTMLマークアップを可能にするということですか?使用できるライブラリがありますか? – Shiv

関連する問題