2012-06-09 52 views
0

我正试图在“练习”应用程序中将文本框的值插入到数据库中。如何将html标记/脚本作为文本插入到sql中?

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

Ex。文=

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

我得到一个错误:从客户端(TextBox1中= “警报( 'XSS')...”)中检测到有潜在危险的Request.Form值。

我已经使用SQL参数,所以像“价值‘/// \\并不像现在的一个问题。

回答

2

设置ValidateRequest =’你的页面错误”,允许HTML。

在页面级别:

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

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

<httpRuntime requestValidationMode="2.0" /> 
+0

设置页面的ValidateRequest =“false”会使页面的安全性变得更弱,我会推荐使用HTML编辑器控件。 – yogi

+0

谢谢(感谢++)立即回复先生,但是有可能在不更改上述那些值的情况下执行此操作。 (我只是好奇,如果可能的话):D –

1

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

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

这不建议在生产环境中,但在你的情况下可以做到这一点。更多的信息在下面MSDN Link

1

这不是一个(潜在的)的问题,asp.net警告。当您接受该值并稍后将其显示在您的页面而没有编码时,那么该不需要的脚本将会触发。

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

0

您可以只将插入的标记插入连接字符串中。如:

Insert into table values('<'+'h2'+'>'+'Another One'+'<'+'/'+'h2'+'>')