【问题标题】:Jquery Ajax returning decoded XML attributes allow XSSJquery Ajax 返回解码的 XML 属性允许 XSS
【发布时间】:2015-01-21 16:35:22
【问题描述】:

我有一个返回 XML 的 jquery ajax 调用。在服务器上,我们使用 Microsoft 的 Antixss 库对 xml 属性进行编码,特别是调用 Encoder.XmlAttributeEncode。

服务器上的结果已正确编码

<data><item att1="Test" val="&lt;script&gt;alert(&quot;XSSFIX&quot;);&lt;/script&gt;" /></data>

但是当 xml 返回到客户端时,xml 显示已解码

<data><item att1="Test" val="<script>alert("XSSFIX")</script>;" /></data>

属性被拉出并附加到 DOM。查看处理这种情况的最佳实践。

更新 #1 在客户端上,我动态创建一个表并插入类似于下面的 xml 属性的值。最后,我将表格(字符串)附加到 div 中。

...
tableMarkup +=  "<tr><td>" + f.getAttribute('att1') + "</td><td>" + f.getAttribute('val') + "</td></tr>";

placeHolderDiv.append($(tableMarkup))

【问题讨论】:

    标签: jquery .net xml xss ashx


    【解决方案1】:

    听起来你实际上需要两层转义:

    1. HTML 转义要在客户端连接到 HTML 的内容
    2. XML 转义您插入到 XML 属性中的内容

    HTML 转义应该在客户端完成(例如,使用.text() 而不是.html())。

    XML 转义应该由您的 XML 库完成(例如,将字符串传递给 XAttribute;您不应手动连接 XML)

    【讨论】:

    • 我已更新我的问题以包含更多客户详细信息。我相信我所要做的就是对 f.getattribute('att1') 和 f.getAtttribute('val') 进行 html 编码,它应该没问题。对客户端最好的 html 编码器有什么建议吗?
    • @maguy:用自动编码文本的模板引擎替换你的字符串连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多