这个问题主要防止内部技术人员对数据库直接操作,大家有什么实现的方法吗?主管要求的功能是这样描述的:对数据库中的每一行敏感数据设有独有的数字签名,每一次修改数据库我们都在底层进行签名校验。未经授权的数据库修改无法通过校验,程序进行终止操作并冻结账户并弹出警示。此安全模块防范黑客或内部技术人员绕过后台管理模块,直接修改底层数据库的非法行为。使用的是PHP+MYSQL,我现在想到是思路是用数据库触发器。但触发器如何传参数呢?感谢几个人的回答,但现在为止还没有答案,peixinchen的回答peixinchen526小时前回答·6小时前更新规章制度的问题就用规章制度的方式解决,不要想用技术手段来防,性价比太低。当然基本的制度要做到:1.数据库权限分级管理,root权限别滥用;2.运维系统分级,root权限别滥用。但这些都防不住管理员进行数据更改,这种时候还是“惩罚措施”最有效。PS:如果是内部有人恶意破坏,如何进行定位追查,那就是另外的问题了。我考虑的是,假如是银行的数据系统,一个数据库管理员能直接修改数据库的吗?你能靠制度来管?现在我就是想看有没有技术的方法实现只能通过程序来写入修改数据。进过各位的讨论,好像明白了一些,综合沙渺与peixinchen所说,重新思考中……
2 回答

繁星淼淼
TA贡献1775条经验 获得超11个赞
我们现在的做法程序员和DBA是分开的各尽其责,程序员是没有访问数据库的权限的。若涉及到数据库修改,走内部的事务系统审批流程,DBA接到任务会按照你的事务要求执行,每步都有记录。

慕运维8079593
TA贡献1876条经验 获得超5个赞
不要踩嘛。在特定的需求下,研究内控怎么做是个好问题。只要把MySQL的用户名和密码开放给PHP层,那么程序员就必然可以直接操作MySQL数据库。因为PHP本质也只是执行原始的SQL语句,从这一点上看“PHP操作MySQL”和“直接操作数据库执行SQL语句”没有本质区别。我可以提一个有趣的问题:用phpMyAdmin读写数据库,这应该算通过PHP操作MySQL,还是直接操作MySQL?:D只有把PHP一层直接访问MySQL的权限收回,才有希望限制程序员只能以规定的行为读写数据库。题主的核心需求是模块封装。这个手段就很多了:在数据库服务器的前边挡一个前级服务器,接收读写请求并翻译为SQL语句用ZendGuard一类的工具,封装不可分析源代码的数据库读写类用PHP扩展封装数据库读写(这个开发成本太高)内控是一个有重大代价的行为——控了别人的权限,就意味着扛下了别人的责任。控制者的疏失和错误,极易引发交流成本和开发时间的增加,甚至会引发受控开发方的反弹、怠工、士气下降等后果。请动用任何手段之前清楚地知道自己在做什么,三思而行。
添加回答
举报
0/150
提交
取消