Php 当使用AES进行解密时,在会话中存储普通密码是否可以接受?

Php 当使用AES进行解密时,在会话中存储普通密码是否可以接受?,php,encryption,cryptography,aes,Php,Encryption,Cryptography,Aes,我用PHP编写了一个web应用程序,它正在处理一些机密数据,放在一个数据库表中。此表中的所有字段(不包括id和创建日期)都使用AES加密,因此任何访问此数据库的人都无法读取 我用用户密码加密数据。数据库中没有简单的密码,只有SHA1的总和,所以我可以验证它。然而,当用户登录时,我需要普通密码来解密用户数据,所以我将此值存储在会话中 这样可以吗?如果没有,处理这种情况的好模式是什么?,这样就没有人可以访问该数据库了 通过在会话中存储密码,您将在/tmp目录(或存储它们的任何地方)中拥有大量包含用户

我用PHP编写了一个web应用程序,它正在处理一些机密数据,放在一个数据库表中。此表中的所有字段(不包括id和创建日期)都使用AES加密,因此任何访问此数据库的人都无法读取

我用用户密码加密数据。数据库中没有简单的密码,只有SHA1的总和,所以我可以验证它。然而,当用户登录时,我需要普通密码来解密用户数据,所以我将此值存储在会话中


这样可以吗?如果没有,处理这种情况的好模式是什么?

,这样就没有人可以访问该数据库了

通过在会话中存储密码,您将在
/tmp
目录(或存储它们的任何地方)中拥有大量包含用户密码的会话文件

访问服务器不仅会使您的第一条语句无效(当您访问服务器时,您可以直接访问大量密码),而且具有服务器访问权限的人——即使是像您这样的有效服务器管理员——也可以看到他或她不应该看到的密码

所以不,这不好

您的问题的一个可能解决方案是对存储在不同服务器上的用户信息使用加密密钥,这样仅访问数据库/数据库服务器是不够的。然而,这只是一个想法,你可能会得到一个更好的答案,例如对这个问题

我用用户密码加密数据

如果他们更改了密码,那么您必须重新加密所有内容。为钥匙寻找更静态的东西

所以我将这个值存储在会话中

会话不应存储这种类型的信息,因为任何其他在盒子上有网站的人(或任何其他访问盒子的方式)可能都可以阅读它。如果您的邮箱使用类似于SUPPP或phpSuExec(询问您的主机)的内容,您可以将此数据放在只有您的帐户才能访问的目录中。您甚至可以将其存储回数据库(当然是加密的)

处理这种情况的好模式是什么


如果安全对你来说很重要,那就去专注。如果您无法做到这一点,那么至少要在使用SUPPP或phpSuExec等的服务器上,这样您的web服务器进程才能在唯一用户下运行,这样与加密密钥相关的任何数据都可以得到保护。

一旦加密,显然无法解密。如果您在共享主机上,则应小心会话。同一服务器上的其他用户可能能够读取您的会话数据并查看passwords@Jonathon,我知道。应用程序部署在共享服务器上,但有自己的主机。也许您可以从输入的密码生成加密密钥,这样您就不会存储明文密码。但是,如果用户更改了密码怎么办?在我看来,你可能把事情搞得太复杂了。会话总是在驱动器上有一些轻微的序列化文本。这意味着您将以可访问/可读/可窃取的方式存储用户密码,这意味着您的安全性基本上不存在。你最好不要加密他们的数据。