2011-11-12 7 views
2

MVC、EFを使用する4.2。私はコメントセクションを持つアプリケーションに取り組んでいます。現在、ユーザーがHTMLを含むコメントを入力するとユーザーがHTMLコメントを入力できるようにする方法

<b>text</b> 

と安打私は、DBに途中でHTMLを扱うにはどうすればよい

  1. 「... ptentially危険のRequest.Form値が検出されました」私はメッセージ を取得し提出しますか?私はちょうどhtmlをストリップする必要がありますか?またはそれをエンコードする?私はserver.htmlテキストを試しましたが、私はまだ同じエラーメッセージを持っていました。

私はここにSOの一部を含む問題に関する投稿数読みました - 理想的this onethis one

を、私はこのような強力なEMなどのHTMLタグの限られた数を許可できるようにしたいのですが、a。 Anti-XSS、HTML敏捷性、BBコード、マークダウンスタイルエディタはまだ推奨される方法でしょうか?私はJeffがホワイトリストビットのコードを持っていることを知っていますが、それは数年前です。

答えて

1

あなたは

[ValidateInput(false)] 
public ActionResult foo() 
{ 
} 

行うこともできますし、あなたはまた、あなたのweb.configファイル内requestValidationMode設定する必要があるかもしれませんAllowHtml

public class Foo 
    { 
     [AllowHtml] 
     public string bar{ get; set; } 
    } 
+0

私はこれらの属性も見ましたが、XSSと悪質なコードがコメントを通じて送信される可能性はありますか? –

+0

あなたが古いビューエンジンを使っている場合(私は名前を忘れてしまった) '<%:Html.TextBoxFor%>'と書くことができます。値をエンコードするか、かみそり '@ '構文を使用している場合htmlをエンコードします – Rafay

+0

xssやその他のコードが[MicrosoftのAnti-XSS](http://wpl.codeplex.com/)ライブラリ – Buildstarted

0

でモデルのプロパティを飾ることができます。

</system.web> 
    <httpRuntime requestValidationMode="2.0" /> 
</system.web> 

詳細については、this linkを参照してください。

0

MVCには、検証を完全に無効にすることなくHTMLを許可するプロパティを指定できる属性があります。それでも危険ですが、リスクを緩和できるように単一の財産に限定することができます。ここにはMSDN article for the AllowHtmlAttributeがあります。属性の適切な使用方法は、お使いのモデルに適切なプロパティを飾るためにする必要があります:

public class MyModel 
{ 
    public MyModel() 
    { 

    } 

    // Some other stuff in here 

    [AllowHtml] 
    [HttpPost] 
    public string MyHtmlString { get; set; } 

} 
0

次のようにHTMLのincommentsを許可するための私のソリューションは、次のとおりです。CommentTextプロパティに

  1. AllowHtmlを私のコメントクラスで
  2. 狭いタグのサブセットを許可します。コメントでHTMLを表示するためにHtml.Rawを使用して、私は通常、出力時には
  3. 同じよう
  4. が続いてDBに結果を保存するホワイトリストを経て許可されていないHTML形式をスクラブするために、HTML消毒クラスとインラインスクリプトを使用します
関連する問題