我正在尝试开发一个“练习”应用程序,其中文本框值将被插入到数据库中。
当我插入 textbox.text 值时会发生什么。
前任。文字=
<script>alert('Hello')</script>
我收到一个错误:从客户端检测到具有潜在危险的 Request.Form 值 (TextBox1="alert('XSS')...")。
我已经在使用 sql 参数,所以像 ' " /// \\ 这样的值现在还不是问题。
我正在尝试开发一个“练习”应用程序,其中文本框值将被插入到数据库中。
当我插入 textbox.text 值时会发生什么。
前任。文字=
<script>alert('Hello')</script>
我收到一个错误:从客户端检测到具有潜在危险的 Request.Form 值 (TextBox1="alert('XSS')...")。
我已经在使用 sql 参数,所以像 ' " /// \\ 这样的值现在还不是问题。
为您的页面设置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" />
如果仅用于测试目的,您可能会禁止 ASP.NET 验证器,因此它将停止寻找可能具有潜在危险的 HTML/XML 标记。为此,请在您的 aspx 页面中将 ValidateRequest 设置为 false。
<%@ Page Title="" Language="C#" ValidateRequest="false"
这不建议用于生产环境,但在您的情况下可以做到这一点。以下MSDN 链接中的更多信息
这不是 asp.net 警告的(潜在)sql 问题。当您接受该值并稍后在您的页面中显示它而不进行编码时,该不需要的脚本将被触发。
此时它会显示一个无害的警报,但是如果您允许任何用户输入这些值,那么谁知道会发生什么。
您可以在连接字符串中插入中断的标签。像:
Insert into table values('<'+'h2'+'>'+'Another One'+'<'+'/'+'h2'+'>')