如何将 html 标签/脚本作为文本插入 sql

本文关键字:文本 插入 sql 脚本 html 标签 | 更新日期: 2023-09-27 18:36:50

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

发生的情况是,当我插入 textbox.text 值时。

例如文本 =

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

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

我已经在使用 sql 参数,所以像 ' "///'''' 这样的值到目前为止不是问题。

如何将 html 标签/脚本作为文本插入 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'+'>')