繁体   English   中英

在客户端使用不受信任的数据分配 JavaScript 变量是否是 XSS 漏洞?

[英]Is it an XSS vulnerability to assign JavaScript variables with untrusted data on the client side?

我想澄清一些有关 JavaScript 变量分配和 XSS 漏洞的信息。 如果分配发生在客户端而不是服务器端,是否对 XSS 漏洞开放? 因此,例如这样的事情:

//www.test.com/index.html?q=malcious-javascript;
<script>
var x = window.location.search.substr(1);
</script>

此时分配不受信任的数据是否是一个安全问题? 请注意,这不是服务器端分配。

我的理解是,此时它不会成​​为安全问题,即使它位于被认为不安全的 JavaScript 上下文中。 由于它只是一个字符串,因此无法从服务器端生成的动态 JavaScript 中分离出来,后者被发送到浏览器并呈现为 HTML。 只要数据没有在没有适当转义策略的不安全上下文中呈现,例如 HTML 输入值,将不受信任的数据分配给客户端的 JavaScript 变量就是安全的。

如果我上面的理解是错误的,这是一个 XSS 漏洞,有人可以提供一个实际的 XSS 攻击向量的答案,这样我就可以亲眼看看以更好地理解它的执行。

当它直接呈现为 HTML 而没有任何清理时,它只是 XSS。

例如,将用户输入设置为innerHTML,或者将用户输入直接渲染到元素的属性中。

你不应该用x做的事情的例子:

element.innerHTML = x;

otherElement.innerHTML = '<div><button type="' + x '">Click me</button></div>';

eval(x); // Just avoid eval overall.

你可以用你的x做什么:

element.innerText = x;

otherElement.dataset.url = x;

oneMoreElement.href = x;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM