MVC は、 HTML インジェクションやクロスサイト スクリプティング (XSS)攻撃からアプリケーションを自動的に保護します。これが、html/javascript を投稿しようとすると、デフォルトで「潜在的に危険な Request.Form 値がクライアントから検出されました (...)」というメッセージが表示される理由です。
ただし、ユーザーが html を投稿できるようにしたい場合もあります。ユーザーが「›」などの文字を使用できるようにしたい場合や、ブログ機能を実装して ‹h1› や ‹div› などのタグをサポートしたい場合があります。これは、MVC を無効にすることで簡単に実現できます。検証を要求します。
[ValidateInput(false)]
呼び出しているコントローラーのアクション メソッドに属性を追加します。これにより、特定のアクションでモデル全体のリクエストの検証が無効になります。
もう 1 つの方法は[AllowHtml]
、モデルで html を必要とするプロパティに属性を追加することです。
これらの 2 つの属性は、html/javascript がアプリケーションに GET IN することのみを許可しますが、MVC は html エンコーディングを使用してそれらを安全に出力します。html のように出力したい場合は、@Html.Raw(@Model.Content) を使用できます。ただし、アプリケーションがクロスサイト スクリプティング攻撃 (XSS) にさらされる可能性があるため、注意して使用してください。
私は誰かのブログからこの解決策を見つけました
ソリューションについては、以下のコードも参照してください
次の方法でアプリケーション内のエラーを処理できます
1. アプリケーションの Web.Config ファイルで CustomErros モード セクションを設定する
これは、mode 属性が受け入れることができるオプションのリストです。
RemoteOnly:リモート ユーザーに対して一般的なエラー ページが表示されます。ローカル要求 (現在のコンピューターから行われた要求) については、豊富なエラー ページが表示されます。これがデフォルト設定です。
オフ:リクエストのソースに関係なく、すべてのユーザーに対して豊富なエラー ページが表示されます。この設定は、多くの開発シナリオで役立ちますが、デプロイされたアプリケーションでは使用しないでください。
オン:要求のソースに関係なく、すべてのユーザーに対して一般的なエラー ページが表示されます。これは最も安全なオプションです。
<System.Web>
//map all the erros presented in the application to the error.aspx webpage
<customErrors mode="RemoteOnly" defaultRedirect ="~/error.aspx" />
<System.Web>
2. Application_Error 関数で Global.asax ファイルを介して
//handle all the errors presented in the application
void Application_Error(object sender, EventArgs e){
Server.Tranfer("error.aspx");
}
これがうまくいくことを願っています。
stackoverflow ソリューションから