Asp.Net Validaterequest False

3
我正在创建一个Asp.Net程序的用户界面,用户可以浏览和更改数据库中的信息。因此,他们需要能够使用所有形式的字符,但我仍然需要保持程序HTML和SQL本身的安全性。为此,我正在使用一种自建方法,在处理文本框之外的内容时,将危险字符(如“<”等)替换为它们的html代码(在页面加载时发出,因此在文本框内没有功能)。
现在我的困境是:为了能够做到这一点,我必须禁用Validaterequest参数,这会导致程序发出投诉。将其设置为False可能会有哪些后果?
SQL查询已经参数化,并且我仅过滤以下标记:
& # < > " ’ % @ =

问题:即使我处理了上面的字符,我是否仍然让程序容易受到威胁?基本上这是一个内部网络应用程序,只有少数人能够访问该程序。尽管如此,它所访问的信息相当重要,因此即使是无意的差错也应该被防止。我真的不知道Validaterequest的作用。
编辑:好的,谢谢回答。我将按照最初的计划继续进行。
3个回答

4
主要需要注意的是,请求验证会查找<和>字符,以防止恶意用户将脚本或HTML发布到您的站点上。
如果您对去除HTML标记的代码感到满意,或者在未经处理的情况下不向网站显示保存的数据,则应该没问题。

2
基本上通过替换特殊字符来验证用户输入通常会带来更多麻烦,而且并不能真正解决问题。这完全取决于用户将要输入什么,有时他们需要使用特殊字符,比如


& # < > " ’ % @ =

请考虑有经验的用户仍然可以使用xp_命令,甚至使用CONVERT()函数进行ASCII /二进制自动攻击。只要您将所有输入参数化,就应该没有问题。


1
我认为问题不仅仅是SQL注入攻击,还包括跨站脚本和JS执行攻击。为了防止这种情况,你不能仅仅依赖参数化查询,你应该对用户发送的HTML进行“净化”!也许像HTML Tidy这样的工具可以帮助你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接