PHPMyAdmin及权限配置
PHPMyAdmin是一个网页版本的MySQL管理端,可以完成和navicat几乎类似的功能:建库,建表,建对象,备份,执行SQL语句等,但是为了安全起见,默认情况下,是禁止远程访问的。
所用知识点
1.DocumentRoot
我们去看他这个网址,http://192.168.230.147/phpmyadmin/ 访问的时候明显是在htdocs这个根目录下面去了,但是实际上他的真实目录却是在 /opt/lampp 下
这是为什么呢,实际上这就是 虚拟目录 的作用
指定Web服务器的主目录,那么如果不配置虚拟目录的情况下,所有Web应用都应该放在该目录下。
DocumentRoot "/opt/lampp/htdocs" <Directory "/opt/lampp/htdocs">
如果让 DocumentRoot "/opt/lampp/lampp/htdocs/xindai " 则访问时,直接访问 http://192.168.230.147/ 即可访问到信贷系统
其实我们访问xindai系统也可以做到类似这样的效果,只需要在Apache的配置文件中修改一下DocumentRoot即可 /opt/lampp/etc/httpd.conf ,一般情况下,有关网址访问都是和Apache有关的,这些配置的相关文件都在 /opt/lampp/etc 目录下
将
修改为
(修改Directory的原因是Directory涉及到一些访问控制的权限) 然后 /opt/lampp/lampp restart
那么访问的情况就会由
变为
2.虚拟目录
即便Web应用没有放置于DocumentRoot 目录下,只要通过配置虚拟目录,也可以实现访问,比如 PHPMyAdmin应用程序就没有放到 DocumentRoot 目录下,也是实现访问,那是因为系统为PHPMyAdmin 配置了虚拟目录,其配置文件在 /opt/lampp/etc/extra/http-xampp.conf 中。
我们进入 /opt/lampp/etc/httpd.conf 文件查找 xampp可以看见如下情况
这里使用了很多的include文件。虽说之后httpd.conf才是Apache的核心文件,但是我们也不能将所有的配置信息全部揉进这一个文件当中,这样会显得非常繁琐,且文件也较大,因此我们将一些其他的配置信息写到其他的文件当中去,然后使用include包含进 httpd.conf 中来
这里面include的最重要的就是这个 etc/extra/httpd-xampp.conf
我们可以看到,这个目录下的文件基本上全都是和httpd有关的,现在进入 httpd-xampp.conf 查看
打开之后可以看到这么一段话
Alias /phpmyadmin "/opt/lampp/phpmyadmin" # since XAMPP 1.4.3 <Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit Require local ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory>
这段话的效果就是配置了一个新的虚拟目录。 Alias /phpmyadmin "/opt/lampp/phpmyadmin"
意思是起了一个别名叫 /phpmyadmin 对应的是 /opt/lampp/phpmyadmin。就可以使得我们通过访问 http://192.168.230.147/phpmyadmin 就相当于直接访问到了 /opt/lampp/phpmyadmin
其中 AllowOverride AuthConfig Limit Require local
属于Apache的访问控制权限模块的指令等,一般情况下应用系统中会有一个 .htaccess文件 其中就写的是这些模块的指令。其中 Require local
表示只有本机可以访问,为了实现远程连接控制,就要将其修改为 Require all granted
3.配置远程访问权限
4.Require
Apache2.4中开始使用mod_authz_host这个新的模块来进行访问控制和其他的授权检查。原来在Apache2.2版本下用以实现网站访问控制的Order,Allow,Deny指令需要替换为新的Require访问控制指令
允许所有:Require all granted 拒绝所有:Require all denied 只允许特定域名主机的访问请求:Require host google.com 允许匹配环境变量中的任意一个:Require env env-var [env-var] ... 允许特定的HTTP方法(GET/POST/HEAD/OPTIONS): Require method http-method [http-method] ... 允许,表达式为true:Require expr expression 允许特定用户:Require user userid [userid] ... 允许特定用户组:Require group group-name [group-name] ... 允许,有效用户:Require valid-user 允许特定IP或IP网段,多个IP或IP网段间使用空格分隔: Require ip 192.100 192.168.100 192.168.100.5
以下示例:允许所有访问请求,但拒绝来自特定IP或IP网段的访问请求(阻止恶意IP或网络爬虫网段的访问)
<Directory xxx/www/yoursite> <RequireAll> Require all granted Require not ip 192.168.1.1 Require not ip 192.120 192.168.100 </RequireAll> </Direcory>
5.ACL
从网络的角度来说,举例网路入口(边境)越近,所能防御到的攻击越多越广,童谣,要考虑的通用性也需要越强
PHPMyAdmin开始配置
1.配置远程访问
进入 /opt/lampp/etc/extra/httpd-xampp.conf 文件中,
将
修改为
因为 Require local 只允许本地访问
OK,然后重启xampp
可以进入这个页面了,但是依旧还有些小错误
我们仔细看错误是什么 mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO)
熟不熟悉???我就问你熟不熟悉。
一看我靠,这是不是mysql登录时,不使用密码不允许登录的时候报的错吗,OK看来是需要我们去修改PHPMyAdmin登录MySQL时所需的用户密码
2.配置PHPMyAdmin密码
修改文件 /opt/lampp/phpmyadmin/config.inc.php
我们修改信息,使用root@localhost或者remote@192.168.230.147都可以 /** * First server */ $i++; /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'p-0p-0p-0'; /* Server parameters */ //$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['AllowNoPassword'] = true;
这样才算进来了,我试过了,配置文件使用其他用户是无法登陆的
但是现在还有一个问题就是,不管在那台机器上 访问都可以进入PHPMyAdmin这个页面,非常危险,所以还需要解决这个问题:
解决方案如下:
- 为PHPMyAdmin设置访问密码
- 禁用PHPMyAdmin,注释掉在 httpd-xampp.conf 的包含文件,并删除 PHPMyAdmin 目录
- 管理数据库,使用数据库,为什么一定需要再同一个应用或同一个Apache里面呢?
- 使用 Knock 进行端口管理,并且只在需要的时候短暂打开端口,用完就关闭。
在这里我们先选择直接设置登录密码
进入/opt/lampp/phpmyadmin/config.inc.php 文件,需修改配置文件信息
/** * First server */ $i++; /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'p-0p-0p-0'; /* Server parameters */ //$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['AllowNoPassword'] = true;
然后填写用户名密码即可登录
其他注意事项
(1)任何一个URL地址,一定要指定到具体的文件才可以访问,如果没有指定,则会访问默认文件,默认首页。
例如小额信贷系统,在/opt/lampp/htdocs/xindai目录下的index.php文件,就是该系统的默认文件,默认访问页面
如果将该文件名字改一下会遇见什么情况?
现在我们再去访问一下xindai
就会变成这样
(2)默认情况下,任何一个目录,如果只输入目录名而不输入文件名就去访问,该目录必须要有一个默认文件。比如 index.php index.html index.jsp 或 default.php main.php等,否则将无法访问到系统页面反而给出来的就是该目录下的所有文件,就和上图一样。
而系统的默认文件配置信息,就在 /opt/lampp/etc/httpd.conf中,这是Apache的核心配置文件
但是,我们是不允许用户直接这样访问到目录页面的,这算是一个很大的漏洞,一旦讲这些暴露在外,就危险了,那么该如何处理解决呢?
(3)取消OPTIONS的权限,依旧是在 /opt/lampp/ect/httpd.conf
文件中修改,添加红色框中部分,并注释掉上面那句Options Index Follow…话
然后由于修改了核心配置文件,需要重启 /opt/lampp/lampp restart
现在再去访问就不会有这种情况了
任务:
1.完成PHPMyAdmin的登录密码配置
2.在 Xampp 7.3 上配置 woniunote系统:DocumentRoot需要指定到public目录下,直接放在根目录htdocs是有问题的
3.在Windows上完成上述任意环境配置
到此这篇关于PHPMyAdmin及权限配置的文章就介绍到这了,更多相关PHPMyAdmin权限配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python+selenium 脚本实现每天自动登记的思路详解
这篇文章主要介绍了python+selenium 脚本实现每天自动登记,本文你给大家分享基本的思路,通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03Python requests.post()方法中data和json参数的使用方法
这篇文章主要介绍了Python requests.post()方法中data和json参数的使用方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下2022-08-08
最新评论