是否可以在以下上下文中使用jQuery的.attr(attributeName,value)方法执行XSS攻击?

问题描述 投票:1回答:2

给出的是以下html片段,它是在html文件中静态输入的:

<div id="div001" title="abc">Test</div>

当攻击者可以在以下上下文中为变量unsafe_string提供任意值时,是否可以执行XSS攻击:

$('#div001').attr("title", unsafe_string);

我的问题是:是否有可能突破属性值,以便可以注入和执行某些恶意代码?攻击者只控制unsafe_string,没有其他任何东西。

我可以举例来说

$('#div001').attr("title", '"');

结果是

$('#div001').attr("title") = "\""
jquery xss
2个回答
0
投票

不,因为jQuery负责转义unsafe_string的内容,所以不可能突破属性值。通过jQuery的attr()函数将html或javascript代码写入属性值将转义字符串,不会被解释为html或作为javascript代码执行。

可以通过查看$('#div001')[0].outerHTML来检查逃逸行为。


0
投票

是的,此代码中存在许多漏洞:

  1. 执行$('#div001').attr("title", unsafe_string);时执行恶意JavaScript

示例:jsp代码:$('#div001').attr("title", ${unsafe_string});

当unsafe_string值为"");alert('do nasty stuff')

生成js代码:$('#div001').attr("title", "");alert('do nasty stuff')

编辑:jquery通过逃避危险的字符来保护你免受这两个

  1. 在属性值中注入恶意javascript(标题)
  2. 在属性值中注入html

您必须转义不安全的字符串以防止所有这些(并且您还必须在将其保存在应用程序中时验证不安全的字符串)。我建议使用现有的安全库,具体取决于您的技术堆栈。在这里查看更多:https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet


编辑:4。如果你将你的js代码保存在html文件中,你也可能容易受到html注入的影响示例:jsp代码:

<body>
    <script>
    $(document).ready(function(){$('#mydiv').attr( "title", ${unsafe_string})});
    </script>
    <div id="mydiv" title='abc'>
        something
    </div>

当unsafe_string是字符串</ script>破坏我的网站时你的页面看起来像this

有关如何在这里测试XSS的更多细节:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

© www.soinside.com 2019 - 2024. All rights reserved.