PHP漏洞XSS的介绍和预防策略

      XSS,第一次听说是在博彦面试的时候,后来查询才知道这是PHP编程的一个漏洞。用户可以利用此漏洞执行自己的JS代码,获得网站重要数据。

      XSS英文全称:Cross Site Scripting。它是和$_SERVER['PHP_SELF'](不多讲查手册)相关的一个漏洞。主要出现在表单提交数据到本身脚本这一应用上。

      先看一下应用代码:

   1: // 将尖括号更换正常状态
   2: <form method="post" action="<?=$_SERVER['PHP_SELF']; ?>">
   3: <input type="submit" value="submit"/>
   4: </form>

      我们看到代码是想通过$_SERVER['PHP_SELF']的值,确定表单数据提交的位置,也就是脚本本身。比如该脚本名字index.php,当然在地址栏中输入index.php是没有任何问题的,但是如果在地址栏中给index.php脚本加上参数,会是怎样的结果?

   1: <!--将尖括号更换正常状态-->
   2: <!--  地址栏输入http://localhost/eg/stu/XSS/index.php/<script>alert('xss')</script>  --> 
   3: <!--回车打开页面,此时会有窗口弹出,确定后查看页面源码如下:-->
   4:  
   5: <form method="post" action="/eg/stu/XSS/index.php/<script&gt;alert('xss')</script&gt;">
   6: <input type="submit" value="submit" />
   7: </form>
   8:  
   9: <!-- 此时单击Submit按钮,同样有JS代码执行 -->

      如果参数是一段js脚本又会怎样?这有更多的测试代码http://ha.ckers.org/xss.html

      是不是js代码执行了?这个到底有多恐怖,大家可以参考fwolf的博文,那里更为详细的阐述了XSS的危害。

这里笔者给出解决XSS攻击的思路:

      对$_SERVER['PHP_SELF']进行转义。过滤其携带的可执行代码。涉及到的函数有htmlentities、strip_tags,以及正则表达式等。

当然,表单的action默认为空就安全了吗?同样不安全!问题如上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值