header函数的一些安全问题
header函数被用来在输出内容给浏览器之前送出一个http头,尽管是很简单的操作但是还是可能带来安全问题。
Example:
<?
$charset=$_GET[$charset];
@header('Content-Type: text/html; charset='.$charset);
.....
.....
?>
上面的这段代码有问题没有呢?在正常情况下是没有的,但是如果我们了解http协议就知道这是有问题的。对于HTTP头
,也是有分割字符的,回车就是分割字符,也相当于HTTP协议里的元字符,所以如果我们在$charset里插入回车的话是
会构造出自己的HTTP头的,甚至是内容哦!
Exp: [url=http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script]http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script>alert()</script[/url]>
这样就可以看到效果,我们是可以伪造输出的任何内容了,并且可以覆盖以前提交的HEADER头内容 :),
但是在php5的时候我并没有测试成功,譬如如下的代码中:
Example:
<?
$url=$_GET[url];
header("Location: $url");
.....
.....
?>
如果我们按照上面的格式提交想伪造出文档的内容就会发现失败,我们一无所获了是么?呵呵,不是的,php会
报告错误,然后顺便把路径也暴露出来了! :victory: :victory: 屏弊错误提示吧。 顶 好文章,我顶你个肺 老大,了解一下还是有好处的 剑心就是剑心
安全就是安全 顶你个肺是脏话... 好象是石头里的吧 谢谢,受教了。 :victory: :victory: 学习了,顶~~ 这都能发现出来..强人 很简单,对于输入的字符,你得进行控制
两种方法
1:检查数据格式,处理特殊字符
2:定义一个数组,检查in_array
thanks
我也不杂个搞的懂 实际环境一般屏蔽错误但还是学习了. :victory: :smile: 学习了 [url]http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script>alert()</script>[/url] [url=http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script>alert()</script]http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script>alert()</script>[/url]
[[i] 本帖最后由 arxccv 于 2008-4-24 10:07 编辑 [/i]] :victory:
页:
[1]
