Использование $ _SESSIONS для установки ID пользователя и PASS - PullRequest
0 голосов
/ 19 января 2012

Было бы угрозой безопасности установить идентификатор пользователя и перейти к сеансу? Если так, то как? Vars сессии будут во включенном файле. Я понимаю, что это не позволило бы другим пользователям, но у меня есть только один пользователь, чтобы войти.

****CONFIG.PHP****
session_start();
$_SESSION['USER'] = 'USERNAME';
$_SESSION['PASS'] = 'PASSWORD';


****LOGIN.PHP****
include ('config.php');
IF ($_SESSION['USER'] == $_POST['USERNAME'] && 
$_SESSION['PASS'] == $_POST['PASSWORD']){
ALLOW ACCESS;
}

Ответы [ 5 ]

3 голосов
/ 19 января 2012

Если вы используете сеансы на стороне сервера, которые не могут быть изменены конечным пользователем в любом случае, нет никаких оснований хранить там пароль.Это просто другое место, где пароль существует на вашем сервере.После того, как вы подтвердите, что это действительный пользователь и пароль верен, вам действительно нужно сохранить их идентификатор пользователя в сеансе.Они никак не могут его изменить, поэтому вы всегда можете верить, что это на самом деле их идентификатор пользователя.

Всегда существует риск перехвата сеанса, но это другая тема.

Что касается вашего коданедоразумение сессий.Вы устанавливаете эти после , когда вы подтвердили ввод пользователя.

****CONFIG.PHP****
$username = 'USERNAME';
$password = 'PASSWORD';


****LOGIN.PHP****
include ('config.php');
IF ($username == $_POST['USERNAME'] && $password == $_POST['PASSWORD']){
    session_start();
    $_SESSION['username'] = $username;
}

Затем вы можете просто проверить, установлено ли $_SESSION['username'].Если это так, то вы знаете, что вы вошли в систему.

IF (isset($_SESSION['username'])){
    ALLOW ACCESS;
}
2 голосов
/ 19 января 2012

Это не было бы угрозой безопасности, но это позволило бы АБСОЛЮТНО НЕТ расширения вообще.Если вам нужно разрешить двух пользователей завтра, вам придется изменить архитектуру входа в систему.

И, если вы разрешаете только одного пользователя, зачем использовать сеанс для хранения значений, с которыми вы сравниваете?Вы можете просто сделать это

Config.php

static class AuthValues
{
   $username = "username";
   $password = "password"
}

И затем, в login.php

include ('config.php');
$auth = AuthValues;
IF ($auth::username == $_POST['USERNAME'] && 
$auth:password == $_POST['PASSWORD']){
ALLOW ACCESS;
}
2 голосов
/ 19 января 2012

Вы не должны сохранять пароль в сеансе.Сессионными данными нельзя манипулировать извне, если вы все сделаете правильно, поэтому вы знаете, что пользователь является законным, когда задано имя пользователя.

1 голос
/ 19 января 2012

Как и имя вашего скрипта CONFIG.PHP указывает, что имена пользователей и пароли являются данными конфигурации. Сеанс предназначен для хранения данных, принадлежащих специальному сеансу пользователя. Хорошей практикой для хранения данных конфигурации является использование CONSTANTS, потому что они не могут быть изменены вашей программой после их определения.

config.php

define('USER', 'USERNAME');
define('PASS', 'PASSWORD');

login.php

include 'config.php';
IF (USER == $_POST['USERNAME'] && PASS == $_POST['PASSWORD']) {
    session_start();
    $_SESSION['allow_access'] = true;
}

WHATEVER.PHP

session_start();
if (isset($_SESSION['allow_access'])) {
    //ALLOW ACCESS
}
0 голосов
/ 19 января 2012

Внедрение сеанса может украсть сеанс другого пользователя и получить его / ее пароль. Даже если вы используете соленый вместо открытого текста, на самом деле это не рекомендуется.

Лучшим способом было бы реализовать хороший алгоритм, перепроверять, если пользователь действителен так часто, как он делает что-то, ему нужно специальное разрешение для этого.

Время обработки и тому подобные вещи должны быть для меня менее важны, чем хорошая безопасность!

Harry

...