【问题标题】:JavaScript encoding for potentially dangerous requests潜在危险请求的 JavaScript 编码
【发布时间】:2012-03-20 00:40:54
【问题描述】:

所以,我现在在不同的上下文中遇到过几次无处不在的 ASP.NET“潜在危险请求”问题。使用 CKEditor 时,通过使用一般建议将“htmlEncodeOutput”选项设置为 true,我在击败它方面取得了相当大的成功。在其他情况下,我使用了另一个广泛给出的将页面验证恢复到旧版本的建议,这实际上是告诉服务器忽略通过的 HTML。所以,好吧。

但我无法弄清楚如何自己编码文本(并保持验证到位)。在黑暗中的狂野刺中,我尝试了 JavaScript 的 escape() 和 encodeURI() 函数,以及一个将括号变成 > 和

是否有任何 JavaScript 函数的工作示例可以发挥 CKEditor "htmlEncodeOutput" 函数的作用?我一定会很感激任何提示。

【问题讨论】:

    标签: c# javascript asp.net-mvc-3


    【解决方案1】:
    function htmlEncode(s) {
      return s.replace(/&/g, '&amp;').replace(/</g, '&lt;')
          .replace(/>/g, '&gt;').replace(/"/g, '&quot');
    }
    

    【讨论】:

    • 谢谢。这适用于我正在使用的测试样本,我将使用它。尽管如此,我还是想知道我读过的那些奇怪的例子——比如“ON”。 -- 这应该触发“潜在的”危险错误以帮助防止 SQL 注入攻击。
    • @Brent,你能把我指向你读到的那篇文章吗?我不太确定你指的是什么。
    • 嗯...嗯,不是一篇文章,而是一个帖子,发帖者试图找出他为什么会收到错误:forums.asp.net/t/1235144.aspx/1/10
    • @Brent,听起来发帖人正在使用反 XSS 过滤器,试图拒绝像 onclick=javascript_goes_here 这样的模式。如果您的过滤器过于宽泛,.replace(/=/g, '&amp;#61;') 将有助于解决它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    相关资源
    最近更新 更多