努力思考 + 实践, 眼高手低是不行的. 注册 | 登陆

注意$_SERVER['PHP_SELF']可能引起的跨站攻击.

通常我们使用

PHP代码
  1. $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];  

来获得当前运行脚本的路径。但是在做一些URL拼合的过程中可能引发XSS跨站攻击。

示例:

PHP代码
  1. <?php   
  2.   
  3. $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER["PHP_SELF"] : $_SERVER["SCRIPT_NAME"];   
  4.   
  5. echo '<a href="' . $PHP_SELF . '">aaa</a>';  

触发方式:http://localhost/script.php/%22%3E%3Cscript%3Ealert('lib3rt3')%3C/script%3E

解决方法:

PHP代码
  1. $_SERVER['SCRIPT_NAME'] ? $_SERVER["SCRIPT_NAME"] : htmlspecialchars($_SERVER["PHP_SELF"]);  

注解:使用http://localhost/script.php/%22%3E%3Cscript%3Ealert('lib3rt3')%3C/script%3E执行脚本时,$_SERVER['SCRIPT_NAME']值为/script.php,未包含恶意的脚本。另外,即使最终使用的是$_SERVER['PHP_SELF']的值,也会被htmlspecialchars转义。

资料来源:http://www.sebug.net/vulndb/2748

Tags: php

« 上一篇 | 下一篇 »

只显示5条记录相关文章

Notepad++运行PHP, Python (浏览: 4015, 评论: 0)
守护进程删除smarty的缓存文件(注释版) (浏览: 3429, 评论: 0)
Php ini_set ini_get可操作配置参数列表 (浏览: 9137, 评论: 1)
资料备忘,保持更新。 (浏览: 6039, 评论: 0)
40个迹象表明你还是PHP菜鸟 (浏览: 4218, 评论: 2)

Trackbacks

点击获得Trackback地址,Encode: UTF-8

1条记录访客评论

很好的。

Post by hao on 2008, December 14, 10:28 AM 引用此文发表评论 #1


本文因为某种原因此时不允许访客进行评论