0

应用程序还没有完成,现在密码和数据库信息只是在数据库中加密,并在应用程序上使用密钥解密。

但我在想,如果我可以将数据库信息保存在加密表中,每个用户数据库组合都有一个条目,并且这些信息使用散列用户密码作为盐进行加密(与用户表中的散列不同,当然)。因此,如果攻击者以某种方式设法获得数据库或应用程序,它仍然无法读取所有数据库密码,因为它需要有权访问此类数据库的用户的密码。

我的想法是,当用户登录时,他的密码被散列(如在数据库盐中),并保存为寿命短的 cookie,以便在用户连接时使用它。

尽管我在想,如果攻击者在我的应用程序上获得执行权,他仍然可以通过每个请求访问已连接用户的 cookie。

另一个缺点是用户无法重置密码,因为如果他这样做了,他就无法解密密码以访问数据库。

那么,您对此有何看法?这是一个好方法吗?你会怎么做?

4

1 回答 1

1

这里有一个误解。仅靠密码学无法保护您的整个业务/公司/数据。

当您加密数据并且用户总是解密和使用这些数据时,您无法对其进行中继,因为如果您让黑客访问您的服务器,黑客将能够像其他用户一样解密数据。

为了保护数据,您必须采取其他措施,例如:

  • 分析您的 Web 应用程序代码,防止所有类型的 SQL 注入、代码执行、LFI、RFI、XSSes 等。

  • 分析您的数据库访问列表。即使用户知道用户名/密码,也不要让外部 IP 可以访问您的数据库服务器。使用适当的访问列表保护数据库。如果页面的大部分部分没有在表中输入数据而只是进行选择查询,则仅向用户授予 SELECT 权限并为 SQL 查询定义此用户/通行证。

  • 始终保持服务器软件更新。它可以是服务器操作系统、Web 服务器应用程序或 Web 应用程序本身。

您可以使用上述方法保护您的数据/服务器,我认为始终在使用用户数据库被加密时进行整体加密并不是一个好主意。它会降低速度/性能,并且不会帮助您防止被黑客入侵。

于 2013-01-22T04:45:54.133 回答