对于无扩展名的PHP程序的研究

hackfan 2004-04-26 12:01:39
对于无扩展名的PHP程序的研究

作者:PHP
环境:WinXp Pro + Apache 2.0.49 + PHP 4.3.5 (Module)

  将没有扩展名的PHP代码,给PHP解释器解释,好处在于大大增加了安全性,给入侵的人、盗链的人,增加了迷惑性。例如:

http://www.msger.net/chat?username=Hackfan
http://www.msger.net/images/test.gif

  从一般认识来看,上文的2个URL很有可能是这样的:

/
|-chat/
|-index.php
|-images/
|-test.gif

  但是Apache + PHP可以让chat、images变成一个PHP程序,而把后面的部分作为参数。事实上,这2个URL很有可能:

/
|-chat. (PHP File)
|-images. (PHP File)
|-imagessecret/ (Directory)

  而http://www.msger.net/images/test.gif将交给images这个PHP程序来处理。下面给出这个程序的部分环境变量:

_SERVER["REQUEST_URI"] = /images/test.gif
_SERVER["SCRIPT_NAME"] = /images
_SERVER["PATH_INFO"] = /test.gif
_SERVER["PHP_SELF"] = /images/test.gif

  大家注意到了,Apache除了对_SERVER["SCRIPT_NAME"]有正确的判断以外,其他的信息几乎都是被我们欺骗了。不知道大家想到利用这个

性质我们可以做什么,反正我想到了可以防止图片被盗链。

  另外,找遍了很多资料,最后还是通过自己,使得Apache能够对没有扩展名的PHP文件进行正确的解释:

  修改httpd.conf,找到<Directory "你的Web绝对目录">,增加:DefaultType application/x-httpd-php

  最后一些遗留问题:

  对于http://www.msger.net/images/../test.gif这类的请求,服务器会如何处理呢?不要用IE发送这样的请求,因为IE自动会处理。

  欢迎有兴趣的朋友和我交流,QQ: 106814
...全文
111 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaofaq 2004-04-27
  • 打赏
  • 举报
回复
我用的虚拟主机(RedHat Linux)
没有设置
http://www1.laiwuren.com/bbs/viewthread.php?tid=2667
http://www1.laiwuren.com/bbs/viewthread?tid=2667

为什么我也不知道

在我自己的Win2000+Apache2.048上也是这样
我没有设置过
不知为甚
nullfox 2004-04-27
  • 打赏
  • 举报
回复
to gaofaq(老高) :
你的Win2000+Apache2.048能这样?
真的吗?好奇怪
贴httpd.conf来看看。。。。
难道是discuz2实现的?
xqi8 2004-04-26
  • 打赏
  • 举报
回复
up
countstars 2004-04-26
  • 打赏
  • 举报
回复
感觉没多大必要搞这些花里花俏的玩意儿
AdvancedServer 2004-04-26
  • 打赏
  • 举报
回复
marrk 学习
hahawen 2004-04-26
  • 打赏
  • 举报
回复
to: mikespook(谁说叫Mike的一定是狼?)
你的这种方法我知道,也告诉过楼主,所以在这我就没说,呵呵。
用这种方法有一个问题,就是不支持pathinfo,但是各种大的搜索引擎都支持pathinfo信息来进行搜索的。也就是说,用了rewrite模块,baidu。com等就不容易搜索到你上面的东西了。这个我程经作过测试,这种情况下的pathinfo中不包含get上去的变量信息,正常是:
对于路径aa.php?id=5pathinfo应该可以得到整个的信息包括get变量,但用了rewrite后,只能得到前面的路径。

to hackfan(Hackfan)
你的那种方法也不全对<Directory "你的Web绝对目录">里面也要用到正则的,不然连图片都解析了。
hackfan 2004-04-26
  • 打赏
  • 举报
回复
不过没有扩展名和你的思想,有点不太一样
mikespook 2004-04-26
  • 打赏
  • 举报
回复
我参考的文章
http://forum.douzhe.com/forum/viewtopic.php?t=845

改好的效果
http://www.xxiyy.com/phpBB2/233.htm

我修改的phpBB2论坛~~~
http://www.xxiyy.com/phpBB2/
hackfan 2004-04-26
  • 打赏
  • 举报
回复
另外,找遍了很多资料,最后还是通过自己,使得Apache能够对没有扩展名的PHP文件进行正确的解释:

  修改httpd.conf,找到<Directory "你的Web绝对目录">,增加:DefaultType application/x-httpd-php

我已经解决了
phplover 2004-04-26
  • 打赏
  • 举报
回复
哦,没有看到后面^_^

你那样文件名中不能有.了,也就是不能允许扩展名了,能做到兼容有扩展名的最好,可惜这里支持的正则功能(好像不支持perl式的)好像很弱,不支持断言
hahawen 2004-04-26
  • 打赏
  • 举报
回复
你的那样不行,连图片文件也都当php处理了!
关键是楼主说的:“对于http://www.msger.net/images/../test.gif这类的请求,服务器会如何处理呢?不要用IE发送这样的请求,因为IE自动会处理。”
phplover 2004-04-26
  • 打赏
  • 举报
回复
我用的都是字母
phplover 2004-04-26
  • 打赏
  • 举报
回复
<FilesMatch "^.*$">
ForceType application/x-httpd-php
</FilesMatch>

这样才行,好办法。

\.
hahawen 2004-04-26
  • 打赏
  • 举报
回复
to :phplover(...) :

我用没有问题,你用的文件名是什么啊??
我用的文件名是“asdfoeEadf346fE”

但是这么写的确是不支持中文。
hahawen 2004-04-26
  • 打赏
  • 举报
回复
可以过滤调对***.***文件的过滤,

但是,如果就是单独要隐藏掉扩展名而要这么做,好像没有什么意义。
phplover 2004-04-26
  • 打赏
  • 举报
回复
To hahawen(变态的大龄青年):
用你的方法不行啊

windows下面更奇怪,文件名中包含大写就会提示找不到网页,全部小写就行
hahawen 2004-04-26
  • 打赏
  • 举报
回复
<FilesMatch "^[^.]*$">
ForceType application/x-httpd-php
</FilesMatch>
phplover 2004-04-26
  • 打赏
  • 举报
回复
Linux下面本身不用扩展名就行
fzjw 2004-04-26
  • 打赏
  • 举报
回复
如果用IIS怎么办???我很想知道怎样在IIS中隐藏扩展名
hope1983 2004-04-26
  • 打赏
  • 举报
回复
哦看看
加载更多回复(5)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧