额外防止数据库篡改

时间:2010-10-04 03:15:33

标签: mysql database-design

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

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

我想我要问的是,创建某种用户控件是否可行,以创建会话ID或类似内容,以便只有当该id与用户登录时存储的id匹配才会运行查询。 / p>

4 个答案:

答案 0 :(得分: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} 

更多:Brian补充说,赛门铁克有一个很好的保护MySQL安全指南。我只是想补充一点,它包含很多非常有用的信息,http://www.symantec.com/connect/articles/securing-mysql-step-step

答案 1 :(得分:0)

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

如果可能,除了通过本地网络或VPN之外,Web服务器不应具有任何管理访问权限。

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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

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