我正在开发一个多虚拟主机环境。 我已经安装了Mysql Remote Control的PhpMyadmin。
环境configuration如下:
one.domain.com two.domain.com onlyphpmyadmin.domain.com
现在,如果我accesso三个领域之一
http://one.domain.com/phpmyadmin/ http://two.domein.com/phpmyadmin/ http://onlyphpmyadmin.domain.com/phpmyadmin/
结果是一样的,允许访问Phpmyadmin。
目标是获得如下这样的情况
http://one.domain.com/phpmyadmin/ --> access denied http://two.domein.com/phpmyadmin/ --> access denied http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed
没有类似的破解
<?php if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com') die('access denied'); ... ?>
在一些Phpmyadmin文件。
在这里我的Phpmyadminconfiguration文件
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/ </IfModule> </Directory> # Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/libraries> Order Deny,Allow Deny from All </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </Directory>
删除别名声明
Alias /phpmyadmin /usr/share/phpmyadmin
从服务器的上下文,并把它放在相关的虚拟主机上下文中
<VirtualHost *:80> ServerName onlyphpmyadmin.domain.com . . . Alias /phpmyadmin /usr/share/phpmyadmin </VirtualHost>
将整个phpmyadminconfiguration包含到相关的虚拟主机中可能会更简单,更可取
<VirtualHost *:80> ServerName onlyphpmyadmin.domain.com . . . include /path/to/phpmyadmin.conf </VirtualHost>
然后从服务器上下文中删除包含的内容,然后重新启动apache以使更改生效。
在RHEL / CentOS中,Apache加载/etc/httpd/conf.d/phpmyadmin.conf来设置/ phpmyadmin别名。 Directory指令最初也被设置为仅允许来自本地主机的stream量,因此访问phpmyadmin(如“domain.com/phpmyadmin”)时可能会收到403错误。
使用以下命令,可以将RHEL / CentOS设置为仅允许/ phpmyadmin别名从特定的虚拟主机运行。
/etc/httpd/conf.d/phpmyadmin.conf
<Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all Allow from 127.0.0.1 </Directory> #Alias /phpmyadmin /usr/share/phpmyadmin #Alias /phpMyAdmin /usr/share/phpmyadmin #Alias /mysqladmin /usr/share/phpmyadmin
接下来,将alias指令添加到您的虚拟主机,并重新启动Apache。
请注意,这不是最安全的实现。 请注意通过身份validation,IP限制或两者的组合来保护/ phpmyadmin。