我听说只要知道我的MySQL用户名和密码,就可以访问它,即使只是在本地localhost上监听。
假设我的信息如下:
USER: root
PASS: 123456
Host: LOCALHOST (only)
有人在当地如何能够访问这个内容?
我听说只要知道我的MySQL用户名和密码,就可以访问它,即使只是在本地localhost上监听。
假设我的信息如下:
USER: root
PASS: 123456
Host: LOCALHOST (only)
有人在当地如何能够访问这个内容?
如果您限制远程主机对用户名和密码的访问,则某人将无法从外部访问数据库。
您还可以配置防火墙,仅允许来自本地主机的3306端口(MySQL默认端口)的流量。
更新
要设置用户只能通过LOCALHOST访问,请使用:
GRANT ALL PRIVILEGES ON *.* TO db_user @'localhost' IDENTIFIED BY 'db_passwd';
GRANT ALL PRIVILEGES ON *.* TO db_user @'127.0.0.1' IDENTIFIED BY 'db_passwd';
另外,将MySQL服务器绑定到本地地址。您可以通过编辑my.cnf
中的[mysqld]
部分来实现此操作:
也就是说,在my.cnf
文件中找到[mysqld]
部分,并进行如下编辑以将MySQL服务器绑定到本地地址:
[mysqld]
bind-address = 127.0.0.1
bind-address=127.0.0.1
,人们仍然可以查看网站及其内容。 - ajtrichardsbind-address
设置应该在 my.cnf 或 my.ini 文件的 [mysqld]
部分中。根据 手册: "mysqld 从 [mysqld] 和 [server] 组读取选项"。 - Bob Stein我发现这是一个比较老的问题,但如果Darkeden有phpMyAdmin或类似的程序运行,任何人都可以使用有效的MySQL凭据登录。
如果它被攻击了,除了限制连接之外,还需要更改所有密码。
通过运行的某个程序(例如Web服务器),该程序可以从外部访问并存在安全漏洞,允许他通过现有的数据库连接运行任意SQL命令 - 请参见https://www.w3schools.com/sql/sql_injection.asp
欺骗他可以从外部访问的某些程序代理与localhost:3306的连接(例如通过机器上错误配置的网络防火墙)
欺骗某个程序运行本地程序(bash、mysql等),然后从那里获得对数据库的访问权限 - 缓冲区溢出和其他特别设计的数据是运行任意代码的常见问题
在具有合法访问权限的连接上进行中间人攻击
处理来自外部的数据的程序中的错误,例如电子邮件、后置脚本/ PDF / 任何带有脚本处理的文档的处理 - 即使查看文本文件也可能很危险 - 请参见https://www.proteansec.com/linux/blast-past-executing-code-terminal-emulators-via-escape-sequences/
通过社交工程方式获得访问权限
设法将硬件设备连接到具有访问权限的计算机上(有多少人会在工作停车场捡起一个“存储器棒”并检查它,而不是一个“可编程键盘”,而且所有计算机都信任键盘!)
还有许多其他类型的方法我不知道,但其中涉及的人分享...
请记住,您需要拥有实用的安全措施,我认为xkcd说得很对:https://xkcd.com/538/