0

ASP.NET 要求の検証とサーバー側の検証を混同しています。ValidateRequest="false" を設定すると、次のようになります。

<%@ Language="C#" ValidateRequest="false" %>
<html>
  <script runat="server">
   void btnSubmit_Click(Object sender, EventArgs e)
   {
      // If ValidateRequest is false, then 'hello' is displayed
      // If ValidateRequest is true, then ASP.NET returns an exception
      Response.Write(txtString.Text);
   }
  </script>
<body>
  <form id="form1" runat="server">
    <asp:TextBox id="txtString" runat="server" 
             Text="<script>alert('hello');</script>" />
    <asp:Button id="btnSubmit" runat="server" OnClick="btnSubmit_Click" 
             Text="Submit" />
  </form>
</body>
</html>

では、RequiredFieldValidator Control などのサーバー側の検証を使用できますか?

それらは別のものですか?しかし、どちらも有効なキーワードを持っています。

それらを説明してくれてありがとう。

4

1 に答える 1

0

はい、違います。

ValidateRequest送信されたフォーム フィールド値のいずれかに、スクリプト インジェクション攻撃を防ぐために、そこにあるスクリプト タグなどの「危険な」値が含まれている場合は、エラーがスローされ、リクエストが中止されます。

などの検証コントロールはRequiredFieldValidator、失敗してもページ処理を停止しません。これらはルールの処理を支援するためのものであり、通常、サーバーやアプリケーションを攻撃から保護することとは何の関係もありません。

于 2012-08-13T16:13:29.123 に答える