尝试获取Cookie时出现的错误提示:"A potentially dangerous Request.Cookies value was detected from the client:
Posted on 2008-02-19 11:45 Nillson 阅读(1127) 评论(0) 收藏 举报
<DIV> <SPAN id=ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry>
<DIV class=bvEntry id=entrycns!7771ff7c39de7784!245 bv:cns="cns!7771ff7c39de7784!245" bv:ca="true" bv:cat="计算机与 Internet">
<DIV id=LastMDatecns!7771ff7c39de7784!245>3/10/2006</DIV>
<H4 id=subjcns!7771ff7c39de7784!245 style="MARGIN-BOTTOM: 0px">A potentially dangerous Request</H4>
<DIV class=bvMsg id=msgcns!7771ff7c39de7784!245>
<DIV>
<P>问:我总是从 ASP.NET 页面中获得以下与 cookie 有关的错误:"A potentially dangerous Request.Cookies value was detected from the client: (W0073355_ID="...icVVWBPvb9OnploMFqAQ==")"。
<P>看起来好像是一些字符的组合引发了这个异常。如何才能改变这种行为呢?因为在等号之后没有任何文本,所以不需要标记该 cookie。
<P>答:正如您所知的那样,这是一个设计用来防止用 HTML 表单提交脚本的安全功能。虽然基本的 64 个字符在 cookie 值中没有一个是无效的,但是有一些组合却不能接受,包括:
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=top>•
<TD>
<P><{a-z} </P>
<TR>
<TD vAlign=top>•
<TD>
<P><! </P>
<TR>
<TD vAlign=top>•
<TD>
<P>expression( </P>
<TR>
<TD vAlign=top>•
<TD>
<P>on{a-z}*= </P>
<TR>
<TD vAlign=top>•
<TD>
<P>&# </P>
<TR>
<TD vAlign=top>•
<TD>
<P>script{space}*。</P></TD></TR></TBODY></TABLE>
<P>如果引发了 HttpRequestValidationException 异常,则解决这一问题的唯一方法就是禁止使用这些 cookie 来请求页面验证。然而,如果您禁止请求验证,则您自己必须对从用户接收到的任何输入执行验证,这一点非常重要。在 ASP.NET 1.1 中引入的请求验证功能被设计为抵御跨站点脚本攻击的第一道防线。没有此类验证,您的应用程序就很容易遭受此类攻击。
<P>
<P>简单解决方法:(禁用validateRequest)
<P>由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危<BR><BR>险性值。立马报错。<BR><BR>解决方案一: <BR>在.aspx文件头中加入这句: <BR><%@ Page validateRequest="false" %> <BR><BR>解决方案二: <BR>修改web.config文件: <BR><configuration> <BR> <system.web> <BR> <pages validateRequest="false" /> <BR> </system.web> <BR></configuration> <BR><BR>因为validateRequest默认值为true。只要设为false即可。</P></DIV></DIV></DIV></SPAN></DIV>
<DIV class=bvEntry id=entrycns!7771ff7c39de7784!245 bv:cns="cns!7771ff7c39de7784!245" bv:ca="true" bv:cat="计算机与 Internet">
<DIV id=LastMDatecns!7771ff7c39de7784!245>3/10/2006</DIV>
<H4 id=subjcns!7771ff7c39de7784!245 style="MARGIN-BOTTOM: 0px">A potentially dangerous Request</H4>
<DIV class=bvMsg id=msgcns!7771ff7c39de7784!245>
<DIV>
<P>问:我总是从 ASP.NET 页面中获得以下与 cookie 有关的错误:"A potentially dangerous Request.Cookies value was detected from the client: (W0073355_ID="...icVVWBPvb9OnploMFqAQ==")"。
<P>看起来好像是一些字符的组合引发了这个异常。如何才能改变这种行为呢?因为在等号之后没有任何文本,所以不需要标记该 cookie。
<P>答:正如您所知的那样,这是一个设计用来防止用 HTML 表单提交脚本的安全功能。虽然基本的 64 个字符在 cookie 值中没有一个是无效的,但是有一些组合却不能接受,包括:
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=top>•
<TD>
<P><{a-z} </P>
<TR>
<TD vAlign=top>•
<TD>
<P><! </P>
<TR>
<TD vAlign=top>•
<TD>
<P>expression( </P>
<TR>
<TD vAlign=top>•
<TD>
<P>on{a-z}*= </P>
<TR>
<TD vAlign=top>•
<TD>
<P>&# </P>
<TR>
<TD vAlign=top>•
<TD>
<P>script{space}*。</P></TD></TR></TBODY></TABLE>
<P>如果引发了 HttpRequestValidationException 异常,则解决这一问题的唯一方法就是禁止使用这些 cookie 来请求页面验证。然而,如果您禁止请求验证,则您自己必须对从用户接收到的任何输入执行验证,这一点非常重要。在 ASP.NET 1.1 中引入的请求验证功能被设计为抵御跨站点脚本攻击的第一道防线。没有此类验证,您的应用程序就很容易遭受此类攻击。
<P>
<P>简单解决方法:(禁用validateRequest)
<P>由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危<BR><BR>险性值。立马报错。<BR><BR>解决方案一: <BR>在.aspx文件头中加入这句: <BR><%@ Page validateRequest="false" %> <BR><BR>解决方案二: <BR>修改web.config文件: <BR><configuration> <BR> <system.web> <BR> <pages validateRequest="false" /> <BR> </system.web> <BR></configuration> <BR><BR>因为validateRequest默认值为true。只要设为false即可。</P></DIV></DIV></DIV></SPAN></DIV>
浙公网安备 33010602011771号