Web安全——XSS脚本注入攻击

好久不发文章,我表示…我还活着。
只不过最近在写Git-books,所以忽略了我的这个博客。这两天在看Web安全相关的东西,觉得确实有意思。

XSS跨站脚本攻击

XSS 意为跨站脚本攻击(Cross Site Scripting),缩写应该是CSS,但是已经有了一个层叠样式表(Cascading Style Sheets),所以就叫它XSS了。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的,最常见的就是拿到攻击者的 Cookie 然后就可以登录别人的账号了。

清单 1. 存在 DOM based XSS 的 HTML 代码

<HTML>
<TITLE>Welcome!TITLE>
Hi
<SCRIPT>
 var pos=document.URL.indexOf("name=")+5;
 document.write(document.URL.substring(pos,document.URL.length));
SCRIPT>
<BR>
Welcome to our system
…
HTML>

按照该页面 JavaScript 代码逻辑,它会接受 URL 中传入的 name 参数并展示欢迎信息,如清单 2 所示:

清单 2. 正常情况下的访问 URL

http://www.vulnerable.site/welcome.html?name=Jeremy

清单 3. 访问 URL 中注入脚本

http://www.vulnerable.site/welcome.html?name=

值得关注的是,通过以上示例可以看出,恶意代码不需要嵌入服务器的响应中,基于 DOM 的跨站点脚本编制攻击也能成功。可能某些读者会认为:目前主流浏览器会自动转义 URL 中的 ‘<’ 和 ‘>’ 符号,转义后的注入脚本就不会被执行了,基于 DOM 的跨站点脚本编制也就不再有什么威胁了。这句话前半段是对的,但后半段就不准确了。我们要意识到攻击者可以很轻松地绕过浏览器对 URL 的转义,譬如攻击者可以利用锚点 ‘#’ 来欺骗浏览器,如清单 4 所示。浏览器会认为 ‘#’ 后面的都是片段信息,将不会做任何处理。

http://www.vulnerable.site/welcome.html#?name=

测试:
chrome可以拦截XSS:
Web安全——XSS脚本注入攻击_第1张图片
IE不行
Web安全——XSS脚本注入攻击_第2张图片

你可能感兴趣的:(web安全)