xss攻击简介:
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
写一个简单的例子(当然这个不算是攻击,只能算是恶作剧罢了)
比如:做了一个表单
<form action=”” method=”post”> 内容:<input name=”te” type=”text”><br> <input name=”sub” value=”提交” type=”submit”> </form>
然后在下面获取到提交的内容
php代码我们一般这样写:
if(isset($_POST)){ $a=$_POST[‘te’]; echo $a;//或者存入数据库 }
这样如果在表单中提交这样的代码(<script>window.alert(‘弹出,弹出’);</script>)
是不能提交的!!可是我们需要存入数据库啊!!不能提交怎么办?如果你数据库中直接存入这样数据~~~你输出出来看看~~
第一:先解决存入数据库的问题
将提交的数据经过$a=htmlspecialchars($_POST[“te”]);处理,这样的数据就可以存入数据库中!!
第二:我就想把数据库中存入<script>window.alert(‘弹出,弹出’);</script>这样的数据库,你看怎么办!!!
解决办法:前面我总结过html处理函数中htmlspecialchars对应的一个函数htmlspecialchars_decode
附:存入数据库的函数需要经过htmlspecialchars处理!