2017-02-24 19 views
0

私は、ASP.NET MVC 5アプリケーションをクロスサイトスクリプティング(XSS)から保護したいと考えています。私はいくつかの記事とSOの投稿を行ってきました。理想的なオプションは、入力をエンコードし、入力が再表示されたときにエンコードすることです。XSSからASP.NET MVC 5アプリケーションを保護する

ただし、MVSは、XSS攻撃を回避するために、デフォルトでHTMLマークアップを含むリクエストを防ぎます。デフォルトでは、潜在的に危険なコンテンツが要求内で検出された場合、ASP.NET 4.5は例外をスローします。

特定の正当なケースでは、ユーザーがマークアップを提出することは完全に容認されます。しかし、そこに私のアプリケーションはいいえこの場合、ユーザーはマークアップを入力する必要があります。

入力フィールドに任意のマークアップを入力すると、asp.netは例外として例外をスローします。 私はまだ入力をエンコードする必要があるか、すでにasp.net 5で気になっていますか?

答えて

0

入力フィールドにHTMLをポストすると、ASP.NET MVCは例外をスローします。 特定の入力にAllowHtml属性を追加する必要があります。たとえば、次のように

public class Post 
{ 
    public string Title {set;get;} 
    [AllowHtml] 
    public string Content { set;get;} 
} 

あなたはドキュメントごとに@を使用する必要があり、このフィールドを表示する場合:

https://docs.microsoft.com/en-us/aspnet/core/security/cross-site-scripting

MVCで使用されるカミソリエンジンが自動的にすべての出力がない限り、変数から を調達エンコードそうしないようにするのは本当に大変です。 は、@ディレクティブを使用するたびにHTML属性のエンコード規則を使用します。 HTML属性エンコーディングはHTMLエンコーディングのスーパーセットであるため、 を意味します。これは、HTML エンコーディングまたはHTML属性エンコーディングを使用する必要があるかどうかに気にする必要はありません。信頼できない入力 @をHTMLコンテキストでのみ使用するようにしてください。 をJavaScriptに直接挿入しないでください。タグヘルパーは、 をタグパラメータに使用して入力をエンコードします。

関連する問題