如何将 html 标签/脚本作为文本插入 sql
本文关键字:文本 插入 sql 脚本 html 标签 | 更新日期: 2023-09-27 18:36:50
我正在尝试开发一个"练习"应用程序,其中文本框值将入到数据库中。
发生的情况是,当我插入 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 页中将"验证请求"设置为 false。
<%@ Page Title="" Language="C#" ValidateRequest="false"
不建议在生产环境中这样做,但在您的情况下可以解决问题。以下 MSDN 链接中的详细信息
这不是
asp.net 警告的(潜在的)sql问题。当您接受该值并在页面中显示它而不进行编码时,将触发该不需要的脚本。
此时,它将显示无害的警报,但是如果您允许任何用户键入这些值,那么谁知道会发生什么。
您只需在连接字符串中插入断开的标签即可。 如:
Insert into table values('<'+'h2'+'>'+'Another One'+'<'+'/'+'h2'+'>')