3

私のサイトでは、サイトユーザーがブログ投稿を書くことができます

class BlogPost  
{  
 [AllowHtml]  
 public string Content;  
}

このサイトは、MVC5 インターネット アプリケーション テンプレートを使用して作成され、CSS にブートストラップ 3 を使用します。そこで、http://jhollingworth.github.io/bootstrap-wysihtml5を使用して、リッチ テキスト エディターのすべての JavaScript 部分を処理することにしました。

それは魅力のように機能します。しかし、POST を実行するには[AllowHtml]、上記のコードのように属性を追加する必要がありました。そのため、データベースに侵入してすべてのユーザーに表示される可能性のある危険なものが怖いです。

フォームに etc のような値<script>alert("What's up?")</script>を入れてみたところ問題ないようでした... テキストはまったく同じように表示されました (<script>になりまし&lt;script&gt;た。しかし、この変換は私が使用した JavaScript プラグインによって行われたようです。

そのため、フィドラーを使用して同じスクリプト タグを使用して POST リクエストを作成しました。今回は、ページが実際に JavaScript コードを実行しました。

脆弱な入力を把握する方法はあります<script><a href="javascript:some_code">Link</a>...?

4

2 に答える 2

1

サーバー側で wysihtml5 コンテンツをサニタイズする同じ問題に直面しました。wysihtml5 がクライアント側のサニテーションをどのように実行し、Html Agility Pack を使用してこれを実装したかにかなり魅了されました: Github の HtmlRuleSanitizer NuGet パッケージ としても利用可能です。

Microsoft の AntiXss を使用しない理由は、タグをどうするかなど、より詳細なルールを強制することができないためです。これにより、たとえばテキスト コンテンツを保持することが理にかなっている場合に、タグが完全に削除されます。さらに、すべて (CSS、タグ、および属性) についてホワイト リストのアプローチを採用したいと考えていました。

于 2015-06-29T14:26:59.987 に答える