我是PHP中的类开发新手,但我仍然对会话的概念感到困惑。
问题1:会话可以通过客户端操作进行更改吗?如果没有,我可以设置静态会话并在没有验证的情况下使用它们吗?
问题2:我应该如何管理我的用户帐户?
我确实使用SALT,但是在注册过程中会生成一个代码并将其插入到DB中,用于登录参考。任何有解释的更正都将非常受欢迎,以及客户修改会话的任何内容。
class user {
private $username = '';
private $password = '';
private $salt = '';
public $prefix = 'rhs_';
function __construct () {
$this->username = '';
$this->password = '';
$this->salt = '';
session_start();
}
public function login ($username, $password) {
$mysql_conn = Database::obtain();
$username = $mysql_conn->escape($username);
$sql = 'SELECT `password`, `salt`, `first_name`, `last_name`, `permission` FROM `accounts` WHERE `username`="'.$username.'"';
$row = $mysql_conn->query_first($sql);
if(!empty($row['password'])) {
$encrypted = md5(md5($mysql_conn->escape($password)).$row['salt']);
if ($encrypted == $row['password']) {
$_SESSION[$this->prefix.'username'] = $username;
$_SESSION[$this->prefix.'password'] = $password;
$_SESSION[$this->prefix.'name'] = $row['first_name'].' '.$row['last_name'];
$_SESSION[$this->prefix.'permission'] = $row['permission'];
header('location: ?page=cpanel');
} else {
return false;
}
} else {
return false;
}
}
答案 0 :(得分:3)
会话是服务器上的一个文件,可以写入和保存变量。每个会话文件对应于您网站的一个活动访问者。 PHP会自动删除大约24分钟未读取或写入的文件。
会话通过cookie链接到用户。当用户浏览您使用会话的页面时,PHP会检查是否随请求一起发送了一个特殊命名的cookie,其中包含其会话标识符。
$_SESSION
。 由于会话是服务器上的文件,因此您的用户无法修改它们。
答案 1 :(得分:0)
我是PHP中的类开发新手
即使您是经验丰富的程序员,制作不安全的身份验证系统也很容易。您应该使用OpenID(或类似于facebook连接的类似系统)。他们有安全专家作为员工。我创建了一个little library you can use for this。您可以在http://westerveld.name/php-openid//
看到演示会话可以由客户更改 操作?如果没有,我可以设置静态 会话并在没有使用它们 验证
客户端无法更改它,但黑客可能会窃取用户会话。您需要阻止session-fixation => session_regenerate_id
我应该如何管理我的用户 帐户?
你可能不应该这样做,因为你犯了错误的改变是大的。但下面是一些快速提示:
我还创建了一个小authentication library,只是为了它的乐趣。我认为这是非常安全的,尽管例如logout.php
仍然容易受到CSRF的影响,尽管这不是一个大问题(修复非常简单)。