PHP China | 中国开源之路 's Archiver

剑心 发表于 2006-11-28 19:00

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会
报告错误,然后顺便把路径也暴露出来了!

kenus 发表于 2006-11-29 18:14

:victory: :victory: 屏弊错误提示吧。

xy7 发表于 2006-11-30 14:20

Maple-x 发表于 2006-12-5 14:47

好文章,我顶你个肺

sunceenjoy 发表于 2006-12-5 15:38

老大,了解一下还是有好处的

carra 发表于 2006-12-5 15:59

剑心就是剑心

安全就是安全

默默 发表于 2006-12-7 16:52

顶你个肺是脏话...

默默 发表于 2006-12-7 16:53

好象是石头里的吧

RunWithU 发表于 2006-12-7 23:53

谢谢,受教了。

kenus 发表于 2006-12-8 23:06

:victory: :victory:

tonyfly 发表于 2007-1-6 14:09

学习了,顶~~

gleon 发表于 2007-11-28 16:56

这都能发现出来..强人

sskaje 发表于 2007-12-28 22:41

很简单,对于输入的字符,你得进行控制
两种方法
1:检查数据格式,处理特殊字符

2:定义一个数组,检查in_array

more99 发表于 2008-3-12 15:27

thanks

我也不杂个搞的懂

idgnarn 发表于 2008-3-29 16:26

实际环境一般屏蔽错误
但还是学习了.

luzhou 发表于 2008-3-29 17:10

:victory: :smile:

cogozhou 发表于 2008-4-12 10:50

学习了

arxccv 发表于 2008-4-24 10:02

[url]http://localhost/test.php?charset=GBK%0D%0A%0D%0A<script>alert()</script>[/url]

arxccv 发表于 2008-4-24 10:05

[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]]

125231896 发表于 2008-5-1 10:05

:victory:

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.