应用程序尚未完成,目前密码和数据库信息仅在数据库中加密,并在应用程序中使用密钥解密。
但我想,如果我可以将数据库信息保存在加密表上,则每个用户数据库组合都有一个条目,这些信息使用散列的用户密码加密为盐(不同于用户表,当然)。因此,如果攻击者以某种方式设法获取数据库或应用程序,它仍然无法读取所有数据库密码,因为它需要具有访问此类数据库的用户的密码。
我的想法是,当用户登录时,他的密码被哈希(如在数据库盐中),并保存为具有短寿命的cookie,以便在用户连接时使用它。
虽然我在想,如果攻击者在我的应用程序上获得执行权,他仍然可以通过每个请求访问连接用户的cookie。
另一个缺点是用户无法重置密码,因为如果他这样做,他就无法解密密码来访问数据库。
那么,您对此有何看法?这是一个好方法吗?你会做什么?
答案 0 :(得分:1)
这里有一种误解。仅凭密码术无法保护您的整个企业/公司/数据。
当您加密数据并且用户总是解密并使用这些数据时,您无法在其上进行中继,因为如果您允许黑客访问您的服务器,黑客将能够像其他用户一样解密数据。
为了保护数据,您必须采取其他措施,例如:
分析您的Web应用程序代码,防止所有类型的SQL注入,代码执行,LFI,RFI,XSS等。
分析您的数据库访问列表。即使用户知道用户名/密码,也不要让您的数据库服务器可以访问外部IP。用适当的访问列表保护数据库。如果页面的大多数部分没有在表中输入数据而只是选择查询,则只授予用户SELECT权限并为SQL查询定义此用户/传递。
始终保持服务器软件的更新。它可以是服务器操作系统,Web服务器应用程序或Web应用程序本身。
您可以使用上述方法保护您的数据/服务器,我不认为总是在使用加密的用户数据库加密是一个好主意。它会降低速度/性能,不会帮助您防止被黑客入侵。