2010-12-29 10 views
4

私はコントローラにHTMLで記事を送信すると、Chromeで例外を取得しています:のASP MVC「潜在的に危険のRequest.Form ...」

リソースの読み込みに失敗しました:サーバーはステータスで応答500(内部サーバーエラー)

.NET 4.0、ウェブサーバは、webdevはVS2010で私の設定です:

<system.web> 
<compilation debug="true" targetFramework="4.0"> 
<assemblies> 
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies> 
</compilation> 
<httpRuntime requestValidationMode="2.0" /> 
<pages validateRequest="false"> 
<namespaces> 
<add namespace="System.Web.Mvc"/> 
<add namespace="System.Web.Mvc.Ajax"/> 
<add namespace="System.Web.Mvc.Html"/> 
<add namespace="System.Web.Routing"/> 
</namespaces> 
</pages> 

...

何が欠けていますか?

+1

もう少し詳しく教えてください。 –

+2

基本的にこれは一貫した質問になるすべてのもの。 –

答えて

21

HTMLを許可するコントローラーアクションに[ValidateInput(false)]を設定する必要があります。 (または全体のコントローラに、それは悪い習慣だ。

他の重要なことは、あなたがすでに持って1、web.configファイルで<httpRuntime requestValidationMode="2.0" />です。

は、.aspxファイルまたはweb.configファイルでRequestValidateを設定しそれは、コントローラではなく、検証を要求し、ビューのようMVCでは動作しませ

編集:。一方を、MVC 3がリリースされましたこれは、あなたがそれらを安全にするために[AllowHtml]とモデルの個々のプロパティを飾ることができます。要求の検証を完全に無効にすることはありません。

+0

その作業。 thx man – eba

+3

@ebaこれは注意して使用してください。これらの値をユーザーに再生すると、XSS攻撃が発生する可能性があります。 HTMLエンコーディングではそれを止めるには十分ではありません。 –

+1

プロフェッショナルASP.NET MVC 4(Gallowayなど)のXSSとHtmlエンコーディングに関する非常に優れたセクションです。読み込みを強く推奨しますが、それらの強力な推奨事項は、4のデフォルトエンコーダとしてAntiXSSを使用することです(Nugetまたはhttp:// wpl.codeplex.com/)。 ..... "AntiXSSは許可された文字のホワイトリストを使用しますが、ASP.NETのデフォルトの実装では禁止された文字のブラックリストが制限されています。入力.... " もう一度、それは解決策ではありませんが、すべてを許可するよりも強力です... –

4

あなたがあなたの財産のための新しい属性を使用することができますMVC 3 RCを使用している場合など[AllowHtml]

代わりに、これはあなたがXSS攻撃を防ぐために助けにはなりませんAction.-コントローラーに[ValidateInput(偽)]の設定の

ASP.NET MVCは、HTMLやクロスサイト スクリプトインジェクション攻撃から保護するためのサポートを内蔵しており、入力としてHTMLコンテンツを投稿しようとし 誰か場合 、デフォルトではエラーがスローされます含まれています。 有効にするには、 を明示的に指定する必要があります( を安全にサポートするために、 がアプリを構築したことがあります)。 ASP.NET MVC 3で は、我々はあなた が HTML入力はDRY 方法で はるかに粒状の保護を可能にする、有効になっていることを示すために モデル/のviewmodelsのプロパティに適用することができ、新しい属性をサポートしている今も です。先月のRCリリースでは、この 属性の名前は [SkipRequestValidation]でした。 モデル/のviewmodelに上記 [AllowHtml]属性を設定すると、モデルは単なる結合HTMLインジェクション 保護をオフにするASP.NET MVC 3が発生します:RC2で、私たち はそれが より直感的にする[AllowHtml]に改名しましたそのプロパティーは です。

関連する問題