【问题标题】:Asp.Net Validaterequest FalseAsp.Net Validaterequest 错误
【发布时间】:2009-04-03 08:18:56
【问题描述】:

我正在创建一个 Asp.Net 程序 UI,用户可以在其中浏览和更改数据库中的信息。出于这个原因,他们需要能够使用所有形式的字符,但我仍然需要保持程序 HTML 和 SQL 本身的安全。出于这个原因,我使用了一种自建方法,当它们在文本框之外处理时,用它们的 html 代码替换危险的字符,如 '

现在我的困境是:要做到这一点,我必须根据主题禁用 Validaterequest 参数,程序会发出投诉。将其设置为 False 的可能后果是什么?

SQL 查询已经参数化,我只过滤掉以下标记:

& # < > " ’ % @ =

问题:即使我处理了上面的字符,我是否会让程序对威胁开放?基本上这是一个内部网应用程序,只有少数人能够访问该程序。然而,它访问的信息相当重要,因此即使是无意的事故也应该被防止。我真的不知道 Validaterequest 到底是做什么的。

编辑:好的,谢谢你的答案。然后我会按照最初的计划进行。

【问题讨论】:

    标签: asp.net validation


    【解决方案1】:

    Validate Request 正在寻找的主要内容是 字符,以阻止您向向您的网站发布脚本和/或 HTML 的恶意用户打开您的网站。

    如果您对去除 HTML 标记的代码感到满意,或者您没有在未处理的情况下将保存的数据显示回网站,那么您应该没问题。

    【讨论】:

      【解决方案2】:

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

      这样的特殊字符
      & # < > " ’ % @ =
      

      想想精明的用户仍然可以使用 xp_ 命令甚至使用 CONVERT() 函数来进行 ASCII/二进制自动攻击。只要您将所有输入参数化,就可以了。

      【讨论】:

        【解决方案3】:

        我认为问题不仅在于 SQL 注入攻击,还在于跨站点脚本和 JS 执行攻击。 为了防止这种情况,您不能单独依赖参数化查询,您应该对用户发送的 html 进行“清理”!也许像 html tidy 这样的工具可以提供帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多