2010-01-19 79 views
0

我在ASP.NET 3.5这需要以文本格式一些输入,并在SQL Server 2005数据库保存它创建了一个网站。数据库字段为varcahar(50)特殊符号不能存储在SQL Server从ASP.NET 3.5

但是,如果在文本框中数据包含了诸如<特殊符号,我不能这样做,>,#,@ ,.

它生成显示安全错误的客户端脚本错误。

对于脚本我正在使用JavaScript。

+0

数据库不关心符号是什么。问题将出现在您的脚本或您的代码隐藏中。你可以发布一些代码吗? – 2010-01-19 12:57:11

+0

你正确的概率是与脚本 – Swati 2010-01-20 12:41:05

回答

3

正如@约翰诺兰写道,这极有可能是ASP.NET内置的请求验证的结果。

您必须关闭内置的验证和滚你自己:

您可以在页级别关闭验证:

<%@ Page validateRequest="false" %> 

或(在web.config中)应用层面:

<configuration> 
    <system.web> 
     <pages validateRequest="false" /> 
    </system.web> 
</configuration> 

不要忘记对应用程序的所有输出进行编码,特别是在关闭请求验证之后。

检出this article关于这个问题。

为了保护您的应用程序,你必须遵循常见的Web应用安全准则和他人之间编码直接或间接产生的用户,以避免跨站点脚本(XSS)所有的输出。微软提供了一个Anti XSS library来简化这一点。 OWASP有一个XSS预防cheat sheet

+0

不会对我的应用程序安全威胁 – Swati 2010-01-20 11:58:09

+0

嗯,即使你不关闭请求验证你应该验证你的输入并编码你的输出。内置的请求阀值仅提供基本的部分保护。 我已经更新了我的答案以及一些AntiXss资源的其他链接。 – PHeiberg 2010-01-20 12:57:52

1

这听起来并不像<>字符。尝试关闭页面指令中的validaterequest。警告:虽然这将允许恶意内容。最好对输入进行编码。