Lit*_*ion 14 php security encryption session
我需要在会话中经常使用密码.我正在使用密码加密的密钥来加密我的userdata.所以有我的问题.将明文密码存储在php会话中是否安全(不是cookie,非客户端)?有没有更好的办法?或者我应该每次只问我的用户密码?
我使用phpseclib使用userpassword加密rsa的私钥.每次我想要访问密钥时我都需要密码.我有两个选择:我存储密码或密钥,我认为这两个都不是很好.我不能使用passwordhash进行加密,导致哈希存储在数据库中的"plaintext"中...
dec*_*eze 31
将明文密码保存在任何容量的任何地方通常都是一个坏主意.会话本身是安全的,但只能像服务器环境的其他部分一样安全.合法和邪恶的管理员或其他用户可以访问存储在其上的数据.如果可以避免,你永远不想处理客户的秘密 ; 这也意味着您希望在任何情况下都避免看到用户的密码,并且应该以明文密码尽可能短的方式构建代码.
如果您需要在会话过程中使用的东西的密码,你应该构建您的应用程序,所以它绝不会使用明文密码,而是使用一个密钥导出函数,以获得从密码的关键,你再使用你的敏感的任务.这样,公开用户密码的机会就会减少很多.请记住,用户唯一的安全措施是密码保密,只有他应该知道.
如果这样做,当黑客访问您的服务器时,他们将以纯文本形式看到密码.永远不要存储纯文本密码(无论在哪里)
关于一般问题.您要求用户输入一次密码,并根据存储的加密密码验证加密密码 - 假设在数据库中.如果它们相同则开始新的会话.当用户下次尝试访问您的站点时,您将检查该用户的会话是否存在.因此无需在会话中存储密码.
小智 7
从来没有任何敏感数据的存储,除非你一般应该避免使用数据库的任何地方MD5和SHA直接的家庭.
如果您正在实施身份验证系统,然后比较客户端信息(通常是用户名和密码),然后创建一个特殊令牌,然后将其保存到会话或cookie.
if ($username == 'someuser' AND $password == 'somepassword_hash'){
$token = md5(uniqid());
// database query with along with user_id and token
$_SESSION['_token'] = $token;
}
Run Code Online (Sandbox Code Playgroud)
functon varifyToken($token){
// database query here
// SELECT user_id FROM sessions WHERE token = 'token_here'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22876 次 |
| 最近记录: |