2012-01-25 23 views
7

私は、次のアプリケーションを実行して入力するとDefault.aspx.csなぜ潜在的に危険なリクエストエラーさえのvalidateRequest = falseをここで

public partial class _Default : System.Web.UI.Page 
{ 
    protected void submit_Click(object sender, EventArgs e) 
    { 
     this.ltlFeedback.Text = this.txtFeedback.Text; 
    } 
} 

私のDefault.aspxの

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %> 
<html> 
    <head runat="server"> 
     <title>xss demonstration</title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 
      We are looking for your feedback. 
      <asp:TextBox ID="txtFeedback" runat="server" TextMode="MultiLine" /> 
      <br /> 
      <asp:Button ID="submit" runat="server" Text="Submit" onclick="submit_Click" /> 
      <br /> 
      Comment: 
      <br /> 
      <asp:Literal ID="ltlFeedback" runat="server" /> 
     </div> 
     </form> 
    </body> 
</html> 

されており、以下の通りですテキストボックス。

<script>alert('Hello')</script> 

以下のエラーが発生します。

潜在的に危険のRequest.Form値がクライアント (txtFeedback = "警告( 'こんにちは...")から検出された。

私ものvalidateRequestかかわらず、このエラーを取得するなぜ私の質問はページにはfalseに設定されている?

答えて

12

を.NET Frameworkの4.0あなたはweb.configファイルで<httpRuntime requestValidationMode="2.0"/>マークアップを設定する必要があります。

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    <httpRuntime requestValidationMode="2.0"/> 
</system.web> 

参考資料 - ASP.NET 4 Breaking Changes #1: requestValidationMode cause ValidateRequest=False to failをご覧ください。

+0

することができ、これを行うことにより、世話をする必要があります。ありがとう –

0

あなたは自分のWeb構成で

<system.web> 
     <compilation debug="false" targetFramework="4.0" /> 
     <httpRuntime requestValidationMode="2.0"/> 
</system.web> 

を次のコードを追加していますがこれはそれだった、クロスサイトスクリプティング攻撃の犠牲者

関連する問題