Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аутентификация, посмотрите на код плз 
:(
    Опции темы
FlameTH
Дата 13.7.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Я использую эту структуру давно, но в последнее время начал сомневаться в ее безопасности. Проверьте плз код и укажите на недочеты. А то на душе не спокойно =)))

Этот скрипт инклюдится в основной, как проверка авторизации и ее выполнения.
Код

<?php
session_start();
require_once('_incs/_my$ql.php');

if(isset($_POST['admin_login'])) {
    $check = crypt($_POST['pass'],$_POST['login']);
    $sql = mysql_query('SELECT * FROM admins WHERE login="'.$_POST['login'].'"');
    if($adm = mysql_fetch_array($sql)) {
        if(($adm['pass_hash'] == $check) && ($adm['login'] == $_POST['login'])) {
            session_register('ADMIN');
            $_SESSION['ADMIN'] = $_POST['login'];
        } else {
            echo 'Неверный пароль!';
        }
    }    else {
        echo 'Неверный логин.';
    }    
}

if(!isset($_SESSION['ADMIN'])) {
    echo '<html><body><form method=post name="admin_login">
                <input type="text" name="login"><br />
                <input type="password" name="pass"><br />
                <input type="submit" value="Вход" name="admin_login">
                </form></body></html>';
    exit;
}
?>


PM MAIL ICQ   Вверх
sabian
Дата 13.7.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.7.2007
Где: Воронеж

Репутация: нет
Всего: нет



Ну вроде как sql-инъекция на лицо. $_POST['login'] вроде нигде не проверяется никак и не очищается.Зловредный хацкер может это использовать
PM MAIL WWW ICQ Skype   Вверх
FlameTH
Дата 13.7.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Тоесть мне нужно добавить проверку на источник $_POST['admin_login'] ?
PM MAIL ICQ   Вверх
GZep
Дата 13.7.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



FlameTH, sql injection премо напрашивается smile 

да и лучше не isset($var) a юзать !empty.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
sabian
Дата 13.7.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 4.7.2007
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(FlameTH @ 13.7.2007,  14:16)
Тоесть мне нужно добавить проверку на источник $_POST['admin_login'] ?

Вообще, когда что либо получаете от пользователей, лучше это очень тщательно проверять.
Для начала прочтите это
PM MAIL WWW ICQ Skype   Вверх
FlameTH
Дата 13.7.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Ясно. Первые два шага, которые нужно выполнить это:
1) Проверить поля и саму сессию на пустое значение.
2) Экранировать спец.символы.

Это уже неплохо обезопасит. Еще что посоветуете?
PM MAIL ICQ   Вверх
GZep
Дата 13.7.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Цитата(FlameTH @  13.7.2007,  15:30 Найти цитируемый пост)
Проверить поля и саму сессию на пустое значение

не просто на пустое! А например от 3 до 15 символов + только буквы и цифры например. Это еще нужно, чтобы адекватно ответить пользователю если он случайно вписал недопустимые символы. (предупреждение о конкретной ошибке, а не просто слово "ошибка", которая почти не несет в себе информации для юзера).


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
FlameTH
Дата 13.7.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



респект ))
PM MAIL ICQ   Вверх
DmitryTs
Дата 14.7.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.3.2007
Где: Moscow

Репутация: нет
Всего: нет



Да и ещё лучше не писать не "Неверный пароль!" и "Неверный логин!", а "Неверный логин или пароль"
PM MAIL   Вверх
flashaa
Дата 14.7.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(GZep @  13.7.2007,  19:52 Найти цитируемый пост)
 Это еще нужно, чтобы адекватно ответить пользователю если он случайно вписал недопустимые символы. 

А зачем делать какие-то символы недопустимыми? 
Можно сделать, чтобы все введенные значения обратывались функцией htmlspecialchars() и опасные символы, такие как "<", ">", кавычки превращались в хтмл-сущности - &lt; &gt 
после такого преобразования все введенные данные в хтмл будут выглядеть совершенно обычно, однако никакого вреда не принесут.

Код

htmlspecialchars(trim($_GET["comment"]),ENT_QUOTES,"cp1251"))


Здесь функция trim() убирает лишние символы пробела в начале и конце пользовательского комментария,
параметр функции ENT_QUOTES - означает, что кавычки также должны заменяться на хтмл-сущности,
а последний параметр "cp1251" - кодировка, в которой будет представлена строка.

А пароли надо шифровать md5()

Это сообщение отредактировал(а) flashaa - 14.7.2007, 13:58
PM MAIL   Вверх
FlameTH
Дата 14.7.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Спасибо конечно, но насчет md5() хешей я другого мнения.
PM MAIL ICQ   Вверх
flashaa
Дата 14.7.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Я к тому, что в пароли тоже можно записать кавычки и какой-нибудь код.
Поэтому что-то делать с паролями обязательно а запрещать спецсимволы в паролях как-то не принято.
Да и хтмлспециалчарс преобразовывать тоже как-то не к месту. Что ещё остается кроме шифрования? я лично не знаю.

Отредактировано: не заметил, что у вас шифрование имеется. Вопрос снимается.


Это сообщение отредактировал(а) flashaa - 14.7.2007, 16:08
PM MAIL   Вверх
jonie
Дата 14.7.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: нет
Всего: 118



еще вариант передачи пароля по небезопасной сети ...
алгоритм такой :
1)сервер генерирует соль $salt, вписывает ее в hidden поле формы 1
2)на форме 1 также присутвует поле логин и submit
3)на форме2 есть поле пароль.
4)юзер вводит пасс, жмет субмит, его действия перехватывает javaScript, что вычислят md5($salt.$password) и вписывает его в скрытие поле формы1
5)идет остсылка $salt, $login, $md5hash
6)сервер делает SELECT из бд по логину, находит пароль.
7)делает md5($salt.$password_from_db).
8)если дайджесты (сгенерированный сервером и посланый юзером) совпали - значит авторизация ОК, иначе бэд.

время сесии ессно ограничено.
перехватить пароль невозможно по причине его неотсылке 8)
получить пароль за короткое время также невозможно (возьмите соль побольше ..)
покриптовать бд тоже стоит...ну это уже иная тема....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GZep
Дата 14.7.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Цитата(flashaa @  14.7.2007,  13:56 Найти цитируемый пост)
все введенные данные в хтмл будут выглядеть совершенно обычно, однако никакого вреда не принесут

ИМХО нельзя допускать в нике все символы. Но тут на вкус и цвет.

хэшировать лучше так:
Код

$pass = md5(md5($pass));



--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.