2010-10-04 102 views
0

是否可以防止允许篡改数据库的人员以外的其他人员。我想我在问是否有数据库登录以外的方法妨碍人们篡改数据库?我知道特权以及如何访问特定用户的某些数据库部分。我正在寻找更多的东西,以防有人设法确定正确的用户名/密码组合。防止数据库篡改

我正在使用此数据库与Web服务器结合使用。数据库服务器和Web服务器位于不同的机器上,位于硬件防火墙之后。 Web服务器只能通过防火墙访问,而数据库服务器只能通过Web服务器访问。

我想我所要求的是创建某种用户控件来创建会话ID或类似的东西,以便只有当该用户名登录时存储的id才能运行该查询。

+1

赛门铁克有一门课程。 http://www.symantec.com/connect/articles/securing-mysql-step-step – bh88 2010-10-04 03:26:13

+0

这是一个很好的阅读,谢谢 – 2010-10-04 03:34:37

+0

确实,这是非常有益的,谢谢。 – 2010-10-04 16:09:01

回答

2

是的,你有一些控制设置哪个用户有什么特权。当然,如果他们获得了root用户密码,那么我认为你可能会运气不好。

查看此链接了解有关授予/撤销权限的信息。 http://beginner-sql-tutorial.com/sql-grant-revoke-privileges-roles.htm

授予语法(从链接)

GRANT privilege_name 
ON object_name 
TO {user_name |PUBLIC |role_name} 
[WITH GRANT OPTION]; 

撤销语法(从链接)

REVOKE privilege_name 
ON object_name 
FROM {user_name |PUBLIC |role_name} 

更多:布赖恩添加评论,赛门铁克有一个很好的指导,确保MySQL的。我只是想补充一点,它还包含很多非常有用的信息,http://www.symantec.com/connect/articles/securing-mysql-step-step

+0

谢谢你。我目前正在为不同的用户进行每次阅读和写作。我一直在寻找更多的东西。 – 2010-10-04 16:10:55

0

防止人们篡改它的最好方法是将其放在只能从其他需要的机器上访问的服务器上与数据库(如Web服务器)交谈

如果可能,网络服务器应该没有任何管理访问权限,除非通过本地网络或VPN。

如果成本问题(您只有一台服务器或共享主机)如果您可以通过SSL连接运行MySQL,那么至少密码不会以明文形式发送。

+0

即使你有一个盒子,你仍然应该设置多个虚拟服务器来分离一些东西。 – 2010-10-04 15:53:31

0

更新您的操作系统以获取任何可能导致特权升级或远程代码执行的安全修复程序,并使用防火墙阻止您需要的端口旁边的每个端口。如果您的数据库需要远程访问,则可以使用SSH隧道。文件系统访问或shell访问可能是篡改数据库的一种方式。

使用具有相应权限的多个凭证。对不需要写入权限的登录使用只读访问权限。

请解释一下你的环境,你的情况和典型用法,这将有助于查明潜在的缺陷。

+0

我会用所有可能的细节更新问题。 – 2010-10-04 15:56:37

0

阅读SQL注入攻击并确保您的代码不会允许它们。

如果您不使用动态SQl并使用存储的proc,则可以将权限放在proc级别,用户只能通过存储过程执行操作,因为您可以防止直接插入,更新和删除表格。这有助于防止欺诈,因为除开发人员编写的内容外,用户无法做任何事情。因此,没有人可以删除整个表格等。除了选择权限以外,不要给开发人员生产权限。加密备份。记住,员工对于数据的威胁与外部攻击一样大或更大。

在某些数据库中,不需要sys管理员的密码。总是使用一个。不要把它交给任何超过你必须的人。