|
|
安装PHPWind的时候发现WIN主机路径暴露的问题,网上也没什么好的解决办法,基本都是针对程序的.
刚开始想从web.config入手解决的.结果location无法解决,fastcgi权限不够( 查资料的时候发现微软一个站上介绍GODADDY的WIN是WINDOW2008的服务器,不错).
接着想子文件夹使用php.ini,研究了一下发现需要修改application.config,估计狗爹也不会给改.
最后没办法了,还是从程序入手吧,头疼医头,脚疼医脚.
先是在discuz里查询了,错误的链接,发现没有任何造成路径暴露的问题(在此否定什么父路径论)
搞了整一天,到晚上的时候忽然发现MB的DISCUZ模板HEAD部优一个base标签,phpwind也有一个base标签
看下phpwind的header.htm的头部base
<base id="headbase" href="$db_bbsurl/">
再看下$db_bbsurl的定义
$_G['siteurl'] = htmlspecialchars('http://'.$_SERVER['HTTP_HOST'].preg_replace("/\/+(api)?\/*$/i", '', substr($_G['PHP_SELF'], 0, strrpos($_G['PHP_SELF'], '/'))).'/');
其实主要定义就是出在PHP_SELF上
其实对于大多数主流PHP程序来说,去掉这个<base>标签就行,或者直接自定义href,指定具体的网址
这个标签一般都是存在于头部文件中
但是既然是PHP_SELF出问题,我们就可以伪造他,然后全局头部引入,具体做法为
第一步:
新建一个auto_prepend_file.php文件,用UTF8编码保存,这个文件包含代码
<?php
if(strrpos($PHP_SELF, '/')!=0){
$PHP_SELF=substr($PHP_SELF, strpos($PHP_SELF, '/',2));
}
if(strrpos($_SERVER['PHP_SELF'], '/')!=0){
$_SERVER['PHP_SELF']=substr($_SERVER['PHP_SELF'], strpos($_SERVER['PHP_SELF'], '/',2));
}
if(strrpos($_SERVER['SCRIPT_NAME'], '/')!=0){
$_SERVER['SCRIPT_NAME']=substr($_SERVER['SCRIPT_NAME'], strpos($_SERVER['SCRIPT_NAME'], '/',2));
}
if(strrpos($_SERVER['REQUEST_URI'], '/')!=0){
$_SERVER['REQUEST_URI']=substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '/',2));
}
?>
之所以没伪造DOCUMENT_ROOT,是因为现在很多程序用这个,容易造成错误,80%的可能性,只好处理PHP_SELF
第二步:
上传auto_prepend_file.php至空间根目录
第三步:
去空间控制面板找到你的空间绝对路径
比如:
D:\Hosting\6902410\html
第四步:
在你的根目录下的php.ini最下面加两句代码
include_path=D:\Hosting\6902410\html
auto_prepend_file = auto_prepend_file.php;
如果你没有php.ini,我下面有提供下载,注意改成你自己的绝对路径,上传到空间根目录
第五步:
进入iis manage,点recycle app pool
直至你就一劳永逸的解决了路径问题.
注意:因为有些程序会把网址固化到数据库或者配置文件中,比如WORDPRESS,PHPWIND.如果你在程序安装后再设定这个,那么会有一部分链接还是有路径问题,除非你能找到他修改的地方,比如WP的设置里.所以建议,在此项设置完成后再装程序
这个跟那些老的解决路径方法没有什么冲突,应该,不过建议用老方法的都改过来.
对PHP不熟,搞了12个小时才搞定,郁闷啊,太困了,只测试了phpwind,大家 有兴趣的测试下其他的程序.另外还存在一个问题,访问子文件夹的时候.如果使用http://xxx.com/xx就会暴露路径.用http://xxx.com/xx/就不会,这个应该做个跳转就行了应该
欢迎大家来交流,QQ:1276011 HTTP://BLOG.SNIU.COM
J加上上一篇:win主机安装Zend Optimizer以解决SHOEX的安装 http://bbs.idcspy.com/thread-129350-1-1.html
两个主要问题就解决了,以后就能安心做站啦,嘿嘿. |
|