为了build立一个安全的数据库,应该考虑哪些方面?
除了避免sqlInjection
,还有什么应该考虑? 什么不该做?
closures它,并擦拭磁盘….几次。 稍微不太极端的是
首先确保服务器,存储,networking和操作系统级别的安全
接下来你想locking用户数据库访问
别忘了DR。 当我在开玩笑擦拭磁盘时,如果您的风险评估是有人会在几天(或永久)中停业,那么烧毁您的数据中心是一个安全问题。
下面是一个SQL Server安全清单,看起来主要关注SQL Server本身的configuration: http : //www.sqlsecurity.com/FAQs/SQLSecurityChecklist/tabid/57/Default.aspx
另外(如果你不能依靠windows唯一的安全模型),你还需要通过encryption连接string的必要练习。
一个相当开放的问题。
一个好的开始是阅读一些基础知识, 维基百科有一个很好的文章 。 那么你必须查看你的具体系统的细节。 几乎所有的数据库引擎都提供了一堆信息来明确如何保护他们的系统。 不要忘了查看地平线:不仅要保护数据库,还要运行系统。
SQL注入是常见的,但是需要注意的许多安全问题之一。
在Oracle中,我所看到的频繁的deviseselect是,应用程序始终以单个数据库用户/模式login – 该应用程序的所有对象的所有者。
更好的devise是拥有一个拥有应用程序对象的用户/模式,然后从该用户REVOKE CREATE SESSION
。 然后,创build另一个用户/模式,该用户/模式将不会拥有应用程序用来login数据库的对象(可能除了同义词)。 然后,向应用程序用户发出最低限度的必要授权(SELECT,INSERT,UPDATE,DELETE,EXECUTE等)。
这样,即使应用程序中的错误可能允许用户执行某些他们不应该执行的操作(例如从表中删除logging),那么您的数据库特权将确保不会发生。
否则,如果应用程序以所有者的身份login,则无法对任何对象进行REVOKE
权限。