如何在asp.net中禁用应用程序请求验证

时间:2011-06-07 19:50:05

标签: asp.net vb.net

我希望能够保存以下内容:

<script src="https://spreadsheets.google.com/gpub?url=http%3A%2F%2Foj0ijfii34kccq3ioto7mdspc7r2s7o9-ss-opensocial.googleusercontent.com%2Fgadgets%2Fifr%3Fup_title%3DBrands%26up_initialstate%26up__table_query_url%3Dhttps%253A%252F%252Fspreadsheets.google.com%252Fspreadsheet%252Ftq%253Frange%253DA%25253AE%2526key%253D0AqFjLMbUaBn_>

nvarchar(max)字段中,当我尝试插入时,我得到以下内容:

  

“服务器错误   '/ TheScienceAndArtOfDataVisualization'   应用。有潜在危险   检测到Request.Form值   客户端   (ctl00$MainContent$txtCode="<script src="https:/...").

4 个答案:

答案 0 :(得分:3)

如果要在所有页面上禁用请求验证,DeadYCool的答案将起作用,如果您只想在特定页面上禁用它,则可以在.aspx的ValidateRequest="false"指令中设置Page文件。

<%@ Page ValidateRequest="false"...

答案 1 :(得分:1)

如果您使用的是ASP.NET 4.0,则可能还需要对web.config进行更改:

<configuration>
  <system.web>
    <!-- Sad requirement to allow ValidateRequest="false" -->
    <httpRuntime requestValidationMode="2.0" />

但如果可能的话应该避免。

答案 2 :(得分:0)

请尽量不要禁用此功能。在将结果发送到服务器之前,HtmlEncode您的结果。禁用一些内置保护功能。无论哪种方式还使用Anti Cross站点脚本库GetSafeHtmlFragment。通过允许html,您可以打开自己的跨站点脚本攻击。请参阅我在这里的演讲以了解问题:

http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV333

答案 3 :(得分:-2)

在web.config中找到以下内容:

<pages validateRequest="true">

并改为:

<pages validateRequest="false">