標準の ASP.net アプリケーションでは、ASP.net は、危険な入力エラーを検出しようとした場合に、validateRequest をスローして XSS 攻撃からある程度の保護を提供しました。この機能は MVC から取り出されたようですが、その理由は何ですか?
4 に答える
この質問は古いことは知っていますが、とにかく答えられると思いました。
アクションに追加できるValidateInputアクションフィルター属性があります。
[ValidateInput(true)]
public ActionResult Foo()
{
}
モデルのプロパティでAllowHtml属性を使用することもできます
public class MyModel
{
public Guid ID { get; set; }
[AllowHtml]
public string SomeStringValue { get; set; }
}
これは越えるのが難しい一線です。あなたの Web アプリケーションは、あるべき姿の単なる RESTful Web リソースですか? それともそれ以上のことをしようとしていますか。次に、__VIEWSTATE、__EVENTTARGET、__EVENTARGUMENT など、100 個の非表示の入力フィールドがあることに気付きます。
ご存知のように、MVC でも XSS 攻撃を防ぐことができます。いくつかの例を見るにはググってください。しかし、その理由は基本的に、MVC が別の「よりクリーンな」タイプの Web アプリケーションだからです。
編集: 上記の内容が明確かどうかはわかりません。しかし、MVC は (ASP.NET のように) それ以上のことをしようとはしないという考えがあります。どちらにもそれぞれの長所と理由があります。
とにかく、XSS を回避するために ValidateRequest よりも堅牢なものがあることを願っています。
ValidateRequest ソリューションはハックだと思います。私の意見では、「XSS を回避する」ことはビジネス ルールです。したがって、モデルに状況を処理させてください。
REST の原則によりよく従いたいという願望に関する説明がとても気に入っています。100 個の非表示フィールドについては、数年前に提供した ASP ソリューションを思い出します。隠しフィールドを増やしてメタデータを保持しました。かわいくない。