【问题标题】:PHP Should you session passwordPHP 如果你会话密码
【发布时间】:2015-12-24 12:54:01
【问题描述】:
我正在构建一个要求用户输入电子邮件、密码和全名的网站。我使用电子邮件和密码作为登录要求。
目前,我正在使用会话变量将电子邮件和密码(未散列/加盐)从 login.php 传递到 index.php 和其他 php 页面。 (在数据库中散列和加盐)
用户每次进入另一个页面时,都会再次检查用户的邮箱和密码会话变量。
使用会话变量存储电子邮件和密码是否安全?
如果没有,我怎样才能使它更安全?
【问题讨论】:
标签:
php
email
session
password-protection
【解决方案1】:
请参阅 -- Is it secure to store a password in a session? -- 关于这一点,但您也应该知道不必这样做是多么容易。
您可能会发现大多数人不这样做的原因,无论安全与否,是因为您在每个页面加载时都验证登录,从而强制在页面之间进行不必要的检查和数据库调用。如果我可以提供一个更简单的解决方案来使问题过时,请考虑以下代码::
一旦用户在登录页面成功登录,添加一个像这样的会话变量::
$_SESSION['loggedin'] = 1;
然后在不同的页面上你可以取出这个无关的密码检查代码并简单地做
if( $_SESSION['loggedin'] != 1 ) {
die('You are not logged in'); // or redirect to login page
}
在此示例中,我们采用了一种非常简单的方法,但这应该有助于您了解避免这种在会话中存储密码的做法所需的逻辑。