当前位置: 首页 > 科技观察

浅谈MySQL数据库的Web安全问题

时间:2023-03-21 00:07:27 科技观察

数据安全是现在互联网安全中非常重要的一环。而一旦数据出现问题,则不可逆转,甚至是灾难性的。还有一些保护措施,在之前的博文中应该已经提到了,这里不再赘述。比如通过防火墙控制,通过系统用户控制,通过Web应用控制等。我想说的是,没有节点是单独存在的。场景1.保证应用本身的安全。2、控制系统用户对数据库的访问权限。3.控制数据库用户对数据库的访问权限。4.保证数据库中敏感数据的安全。5.确保数据库中整个数据的完整性。6、规范日常运维操作。7、业务分工合理。解决方案应用安全删除default数据库和用户mysql初始化后会自动生成空用户和test数据库,会对数据库造成威胁,我们将其全部删除。mysql>dropdatabasetest;mysql>usemysql;mysql>deletefromdb;mysql>deletefromuserwherenot(host=”localhost”anduser=”root”);mysql>flushprivileges;禁止数据库直接从本地加载内容在某些情况下,可以使用LOCALINFILE命令访问操作系统上的其他文件(如/etc/passwd),应该使用如下命令:mysql>LOADDATALOCALINFILE'/etc/passwd'INTOTABLEtable1#更简单的方法是:mysql>SELECTload_file("/etc/passwd")要禁用LOCALINFILE命令,需要在MySQL配置文件的[mysqld]部分加入如下参数:set-variable=local-infile=0来控制用户的权限。这里的用户是指数据库中的用户。控制访问ip。只允许信任的ip访问,其他ip应该拒绝。例如:只允许办公网络,可以访问业务服务器对应的网络。Differentiateroles区分角色,赋予不同的权限。角色的划分需要根据具体的使用场景。下面是一个简单的例子:1.角色:view。权限:只允许查询数据,不允许做任何修改。场景:业务正确性验证2.作用:更新。权限:允许修改数据,但不允许修改数据结构。场景:程序运行3.作用:操作。权限:允许修改表结构,允许增加和修改表,不允许删除表,不允许删除数据库。场景:产品要发布的时候才能用,升级sql就可以执行。4....对敏感信息进行加密,使用md5、sha等算法进行加密。这样即使数据丢失了,也可以减少损失。例如:登录密码、支付密码等。保证数据完整性1.解决单点故障。主从,主主。2.需要备份和恢复。规范日常操作1、如无特殊要求,应使用最小用户。例如,仅使用查看用户。2.如果有操作需要修改数据或者结构,可以考虑两个人一起做。或者你可以考虑把它做成一个函数来减少人对数据库的直接操作。3.在测试环境测试OK后,在正式环境执行。业务分工对数据库的使用较少,可以缓存和静态化。使用尽可能少的数据库。不使用数据库是最安全的。分库分表的敏感数据和常用数据与表的设计完全隔离。例如:用户详细信息和付款信息是完全分开的。优化sql也很重要,往往因为sql的优化不重要,所以数据库对应的服务器资源满了,不提供服务。验证方式是通过不同的账户操作来判断是否有相应的权限。参考资料保证MySQL安全的十四种最佳方式Mysql安全配置《高性能MySql》