developer.mozilla.org说:
不要不必要地使用eval! eval()是一个危险的函数,它 执行它以调用者的权限传递的代码。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
任何恶意用户都可以打开chrome调试器,并修改正在执行的javascript代码。所以他可以把自己的功能等等来执行。
一般有“安全javascript代码”这样的东西吗?
答案 0 :(得分:4)
任何恶意用户都可以打开chrome调试器,并进行修改 正在执行的javascript代码。所以他可以把自己 要执行的功能等。
是的,用户可以"攻击"使用开发人员工具使用JavaScript进行自己的客户端会话。
然而,eval和开发人员工具之间的区别在于eval可以在可共享链接中执行。攻击者可以向受害者发送链接,该链接利用代码评估功能。
拿这段代码:
Toast.makeText(YourActivity.this,"your integer is " + intdelay , Toast.LENGTH_LONG).show();
现在,如果查询字符串为<script>
eval('alert("Your query string was ' + unescape(document.location.search) + '");');
</script>
,您只需显示一个警告对话框,说明以下内容:?foo
现在说Chuck向鲍勃发送了一封电子邮件,主题是#34;看看这个很棒的链接!&#34;。
链接构造如下:
Your query string was ?foo
,其中www.example.com是您的网站。
这会将http://www.example.com/page.htm?hello%22);alert(document.cookie+%22
执行的代码修改为
eval()
(为了清楚起见,我添加了新的线条)。这将显示一个显示所有非httpOnly cookie的警告框。
将其带到下一阶段,攻击者可以构建一个图像链接以将会话cookie发送给自己
alert("Your query string was hello");
alert(document.cookie+"");
这称为Cross-Site Scripting (XSS)攻击。实际上,该类型是基于DOM的XSS,具体而言。
是否有&#34;安全的javascript代码&#34;总的来说?
是的,可以考虑对XSS安全的代码&#34;安全的JavaScript代码&#34; - 它保护当前用户免受跨域攻击。但是,服务器端代码“信任”&#34;目前的最终用户使用开发人员工具无法根据自己的优势修改JavaScript代码或变量,但这并不安全。
因此,安全的JavaScript代码就是保护当前用户的代码。
答案 1 :(得分:0)
是的,当然有安全的JavaScript。您可以随时修改浏览器中的JavaScript,例如您可以修改的方式。在你的机器上运行的python程序。
能够改变自己机器上的代码的工作方式是微不足道的,并不是一个安全问题。
Eval()经常被看作是有问题的,因为它往往是用用户生成的输入执行的(我认为真实的用例并不是真的很少)。 @SilverlightFox在他出色的答案中解释了为什么这可能是一个问题。这一切都归结为eval()可能被利用来在别人的机器上运行你的代码,这是一个安全问题。请注意,这并非仅针对JavaScript,大多数语言具有相同的命名功能。这些功能带有类似的警告。