0

我正在尝试开发一个“练习”应用程序,其中文本框值将被插入到数据库中。

当我插入 textbox.text 值时会发生什么。

前任。文字=

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

我收到一个错误:从客户端检测到具有潜在危险的 Request.Form 值 (TextBox1="alert('XSS')...")。

我已经在使用 sql 参数,所以像 ' " /// \\ 这样的值现在还不是问题。

4

4 回答 4

2

为您的页面设置ValidateRequest="false",以允许使用 html。

在页面级别:

<%@ Page Language="c#"  ValidateRequest="false" AutoEventWireup="false" CodeBehind="TestPage.aspx.cs" Inherits="TestPage" %>

此外,对于 ASP.NET 4.0,您需要将以下内容添加到您的 web.config:

<httpRuntime requestValidationMode="2.0" />
于 2012-06-09T13:13:41.940 回答
1

如果仅用于测试目的,您可能会禁止 ASP.NET 验证器,因此它将停止寻找可能具有潜在危险的 HTML/XML 标记。为此,请在您的 aspx 页面中将 ValidateRequest 设置为 false。

<%@ Page Title="" Language="C#" ValidateRequest="false"

这不建议用于生产环境,但在您的情况下可以做到这一点。以下MSDN 链接中的更多信息

于 2012-06-09T13:21:23.887 回答
1

这不是 asp.net 警告的(潜在)sql 问题。当您接受该值并稍后在您的页面中显示它而不进行编码时,该不需要的脚本将被触发。

此时它会显示一个无害的警报,但是如果您允许任何用户输入这些值,那么谁知道会发生什么。

于 2012-06-09T13:40:42.223 回答
0

您可以在连接字符串中插入中断的标签。像:

Insert into table values('<'+'h2'+'>'+'Another One'+'<'+'/'+'h2'+'>')
于 2014-12-09T13:45:23.843 回答