有哪些方法可以安全地将数据存储在数据库中?

时间:2015-12-05 14:10:19

标签: java sql-server security encryption web-applications

在数据库中以加密格式存储数据的最佳技术是什么?我有兴趣知道非对称加密(公共私钥)与对称加密(由sql server支持)之间的权衡。在任何一种情况下,应用程序如何解密数据?我们如何维护钥匙?

注 - 每条评论重新提出问题详情。

1 个答案:

答案 0 :(得分:1)

  

数据不以纯文本格式存储。

这取决于数据的敏感性。如果是某些敏感数据,如凭据,卡详细信息,则必须加密。如果它是一般数据,则每次存储或更新数据时都会遇到加密,并在每次检索数据时进行解密。密码通常不会被解密,用户密码会被加密,并与DB中保存的加密密码进行比较。

  

开发人员可以访问数据库。

开发人员不能访问生产数据,因为其中一些可能包含敏感数据。如果对某些不敏感的表进行访问,则只提供只读访问权限,以便无法使用secure_file_priv对其进行修改以便数据无法下载。

  

开发人员可以访问证书。

不是开发人员,只有devops必须能够访问证书。

  

只有某些应用程序用户可以访问数据库,超级用户密码并以纯文本格式查看数据。

没有用户必须具有插入/更新/删除权限。只有DBA必须具有访问权限,并且他们必须能够以加密格式访问敏感信息的数据。

  

应用程序类型 - web(使用java堆栈构建)

有许多应用程序在aspx中,许多在php中也是如此。在Java堆栈中开发Web应用程序并不能保证安全性。它依赖于体系结构,针对中间人攻击,sql注入攻击,DOS攻击等攻击的预防措施。

  

数据库 - MS sql server

这取决于您正在开发的应用程序及其对该数据库的支持。

  

操作系统 - Linux

可以使用Linux服务器和Windows服务器。没问题。他们已经实施了预防方法以保护您的系统

  

Web服务器 - apache tomcat

您可以使用apache tomcat服务器或IBM WAS服务器。它取决于您的要求。

  

申请时间很重要。所以任何与维护相关的解决方案

是的,为此,您的解决方案必须通过在数据库端和后端服务器上复制数据来支持高可用性。

  

内存中的超级用户密码无法正常工作,因为应用程序在服务器重启期间会丢失密码。

这些密码存储在配置文件中,或者直接使用加密密钥通过应用程序为DB读取。