ユーザーがHTMLコメントを入力できるようにする方法

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

text

私はメッセージを得る "実際に危険なRequest.Form値が検出されました..."

  1. DBへの途中でhtmlを処理するにはどうすればよいですか?私はちょうどhtmlをストリップする必要がありますか?またはそれをエンコードする?私はserver.htmlテキストを試しましたが、私はまだ同じエラーメッセージを持っていました。

I have read a number of posts on the matter including some here at SO - this one and this one

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

2
追加された 編集された
ビュー: 1

4 答え

できるよ

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

or you can decorate the model property with AllowHtml

   public class Foo
    {
        [AllowHtml]
        public string bar{ get; set; }
    }
1
追加された
あなたが古いコードを使用している場合(私は名前を忘れてしまった)、 <�%:Html.TextBoxFor%> を書くことができます。 @ 構文は、htmlをエンコードします
追加された 著者 Rafay,
xssやその他のコードが心配な方は、 MicrosoftのAnti-XSS ライブラリをご覧ください
追加された 著者 Buildstarted,
私はこれらの属性も見ていましたが、XSSや悪意のあるコードがコメントを通じて投稿される可能性はありますか?
追加された 著者 Ashok Padmanabhan,

MVCには、検証を完全に無効にすることなくhtmlを許可するプロパティを指定できる属性があります。それでも危険ですが、リスクを緩和できるように単一の財産に限定することができます。以下は、 MSDNの記事ですAllowHtmlAttributeの場合属性の適切な使用法は、モデル内の適切なプロパティを修飾することです。

public class MyModel
{
    public MyModel()
    {

    }

   //Some other stuff in here

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

}
0
追加された

web.configにrequestValidationModeを設定する必要があります。


  

詳細については、このリンクをご覧ください。

0
追加された

私のhtmlインシデントの解決策は次のとおりです:

  1. コメントクラスのCommentTextプロパティのAllowHtml
  2. 狭いタグのサブセットを許可します。ホワイトリストを介して許可されていないHTMLとインラインスクリプトをスクラブするには、Html Sanitizerクラスを使用します。
  3. 次に、通常どおりに結果をdbに保存します。
  4. 出力時に、Html.Rawを使ってコメントにHtmlを表示します
0
追加された