Mar*_*arc 0 php regex sql preg-match
我想允许一些管理员在文本字段中手动输入SQL语句(以获取统计数据等).在数据库层,我通过创建一个只能选择但不能更新/删除等的用户来保护数据.
我想通过检查插入的SQL来添加第二个安全性,例如DROP,DELETE或UPDATE.我想出了如何用preg_match做到这一点,但我希望有一个聪明的脚本,可以在一个DROP像之类的东西之间去掉WHERE name = 'DROP 1'
编辑:我想记录管理员是否尝试使用此类语句.这就是我需要进行二级安全检查的原因.这是为了澄清.
有没有人知道剪辑的代码适合这个例子?
谢谢!!
Sam*_*son 10
既然您更新了问题以澄清您的需求,我想提供一个不同的解决方案.不要担心用户作为查询提交的内容,同样,如果MySQL没有足够的权限来执行某些操作,MySQL将会发回错误.
捕获该错误mysql_error(),并使用错误号mysql_errno().如果错误消息显示"DROP命令被拒绝..."或错误号是1142,那么你知道他们试图调皮.在此错误中查找术语比在查询中查找术语更好,因为您正确地指出他们的查询可以合法地使用坏词.
如果您的用户只能SELECT,那么他们不能DROP或DELETE.查找这些单词不会为混合添加任何更多安全性,因为数据库将拒绝任何未明确允许该给定用户的查询.