Корректная автоматическая авторизация, получение передаваемых данных

Bond

Новичок
Корректная автоматическая авторизация, получение передаваемых данных

На сайте есть страницы, просмотр которых возможен только зарегистрированным пользователям.

Авторизация пользователя (лишние детали убраны):
- в случае установки cookie на компьютер пользователя на определенное время
PHP:
setcookie("login", "$login1", time() + время, "/", "домен.ru");
- в случае установки на время жизни session
PHP:
$_SESSION['login'] = $login1;
Проверка авторизации пользователей по session или cookie осуществляется следующим образом (лишние детали убраны):

PHP:
<?php
session_start();
if (!isset($_SESSION['login']) && !isset($_COOKIE['login']))
{
действие
}
else
{

$login1 = htmlspecialchars($login, ENT_QUOTES);
…
проверяем по базе зарегистрированных пользователей
…
действие
…
Пояснение.
После авторизации пользователя переменная $login1 принимает значения хранимое в cookie на компьютере пользователя или значения session.

Корректно ли данным способом во время проверки авторизации на страницах для зарегистрированных пользователей:
PHP:
$login1 = htmlspecialchars($login, ENT_QUOTES);
принимать значение переменной $login ?
 

Фанат

oncle terrible
Команда форума
естественно, некорректно.
при такой авторизации у тебя любой юзер сможет войти под любым именем
 

twistfire

Новичок
Автор оригинала: Фанат
естественно, некорректно.
при такой авторизации у тебя любой юзер сможет войти под любым именем
Почему? Как такое может произойти?
(интересна сама реализация входа)
Ведь cookie нельзя подменить?

просто наверно нужно и пароль, ну например шифрованный хранить в куке... а там сравнивать
 

Bond

Новичок
Конечно в cookie или session хранится хэш пароля, а при изменении личных данных, например пароля или e-mail требуется указывать действующий пароль... Вопрос несколько в другом, корректно ли считывать данные из cookie или session таким способом:
PHP:
$login1 = htmlspecialchars($login, ENT_QUOTES);
Ведь было бы правильнее указать например:
PHP:
"$login1" = $_SESSION['login'];
и
"$login1" = $_COOKIE['login'];
Но тогда одна из переменных будет без значения...
 

kruglov

Новичок
twistfire
Легко. Они хранятся на клиенте и передаются с клиента. А клиентским данным доверять нельзя - это главная заповедь безопасного программирования.

-~{}~ 08.10.05 15:25:

А способ - ходя бы написав свой php-скрипт, который через fsockopen делает запрос на сайт, делает вид что он браузер интернет-эксплоер и шлет что угодно.
 

Фанат

oncle terrible
Команда форума
Bond
что-то ты в совсем дремучие дебри забрёл.
сначала ты спрашивал про безопасность.
тебе про неё ответили.
тут у тебя вдруг, как чёртик из табакерки выскакивает "хэш пароля".
Дальнейшую дискуссию я полагаю бессмысленной. Разговор с человеком, который забывает в вопросе указать ключевые моменты, может быть бесконечным. Ты всё время будешь вспоминать.

Тем более, что, вдруг, про безопасность мы забыли, про авторизацию - тоже, а вся безопасность свелась к какой-то глупости про htmlspecialchars
ну прочти документацию на эту функцию и реши - на кой чёрт она тебе вообще сдалась.
 
Сверху