Отправляет email-рассылки с помощью сервиса Sendsay

PHP Wars: против целого мира

  Все выпуски  

Статья: Предохраняйся с помощью сессий


Информационный Канал Subscribe.Ru

PHP WARS: против целого мира. - выпуск 6

Что и почему.

Вот многие, наверное, уже и подумали, что загнулась наша замечательная рассылка на коню. Зря они так подумали. Новые выпуски будут выходить неизбежно! Вот почему мы так долго молчали:

  • Верно говорят - "как назовешь корабль так он и поплывет". Действительно, словно весь мир вдруг объявил нам войну. Выражалось это в том, что для начала у меня умер модем. Но я не отчаялся, т.к. на работе же есть выделенка! Но что же я вижу придя на работу - убитый сервер! Кошмар!
  • Но это половина беды. На следующий день мне сообщают, что у нас будет внепланово зачет по мат. анализу! Что ж, учеба прежде всего! Забил на все.

И вот, после всех этих испытаний я вновь с новыми силами берусь за рассылку. Многие мне написали, что "все иссяк энтузиазм". Да нет, все совсем наоборот! Доказательством этого служит новый выпуск рассылки.

Да, кстати говоря, не тек уж все и плохо и не стОит кидать в нас камни. Смотрите сами:

  • Нашу рассылку перевели в ранг "Серебряных рассылок"
  • Наконец-то полностью работает наш сайт http://phpwars.net
  • Ну с самое приятное это то, что количество подписчиков растет с каждым днем.
Ну да хватит слов…

Ipirt - глав(в)ред рассыки.

[11.05.2005] Ну вот я опять и задержал рассылку! А все потому, что в нашем учебном примере, который Вы найдете в статье "эксперты по безопасности" нашли очень сильные бреши в защите. Что ж, господа, по этому поводу я могу сказать только одно. В следующих рассылках мы выпустим ряд статей по простейшему обеспечению безопасности. Что ж, придется мне подождать со своей статистикой! И еще я открыл для себя очень интересный факт - 15% читателей нашей рассылки жители стран Евро Союза. Я знаю только одного такого человека. Хотелось бы узнать и о других.
Нам очень важно Ваше мнение о нашей рассылке, если у вас есть какие-либо пожелания или предложения, Вы хотите высказать свое мнение по поводу опубликованного материала, то пишите нам.

Предохраняйся с помощью сессий.

В статье я опишу как создать небольшой, но действенный скрипт авторизации, который не позволит непрошенным личностям совать свой длинный нос на ваш сайт. Данный пример не претендует на звание идеального метода защиты, но все же обойти его будет достаточно трудно (я, по крайней мере, не знаю как это сделать). Представим следующее: у вас есть закрытый сайт "для своих" и вы не хотите чтобы туда заходили всякие нехорошие личности. В этом нам помогут сессии. Пароли и логины будем хранить в таблице mysql.

На первой странице (index.php) делаем форму для ввода данных:

<form method=post action="index2.php">
<table align="center" cellspacing="2" cellpadding="2" border="0" width="320">
<tr>
     <td width="100">Имя:</td>
    <td width="200"><input type="text" name="name"<</td>
</tr>
<tr>
    <td width="100">Пароль:</td>
    <td width="200"><input type="password" name="pass"></td>
</tr>
<tr>
    <td colspan="2" width="300">
 <center>
  <INPUT TYPE="submit" value="Вход">  <INPUT TYPE="reset" value="Сбросить">
 </center>
</td>
</tr>
</table>
</FORM>

Думаю здесь пояснять ничего не нужно. Идем дальше: Сначала краткое пояснение. Мы создаем функцию проверки пользователя check(). У нас есть база данных my_site, содержащая поля id, name и pass, где name и pass - логин и пароль пользователя соответственно. Функция пропускает только тех, кто указал верный логин и пароль в форме ($name, $pass) на входе, потом эти переменные сохраняются в сессию, следовательно, пока сессия жива пользователь может заходить на ваш сайт без авторизации. Даже указав другой верный логин и пароль, он будет авторизирован под указанным ранее логином.

Предполагается, что соединение с базой mysql уже произведено и база данных выбрана.

<?
Function check()
{
if (empty($pass)||empty($name))
error("Не указан логин или пароль");
$sql="select * from my_site where login='".$name."'";
if ($show=mysql_query($sql))
 {
 $a=mysql_fetch_array($show);
 if ($a['pass']!=$pass)
 error("Не верное сочетание логин - пароль");
 else
 session_register("name","pass");
 }
else
error("Ошибка запроса к базе данных");
}
?>

Начнем пояснения с первой строки. if (empty($pass)||empty($name))
Проверяем задан ли пароль и логин. Если одно из полей пустое, то
error("Не указан логин или пароль"); Здесь error - это любая функция вывода ошибки.
В следующей статье я подробно затрону эту тему (вывод ошибки, запись ее в лог, отправка отчета об ошибке и т.д.), а пока мы можем обойтись простой функцией:

<?
function error($er)
{
echo $er;
exit(0);
}
?>

Если поля не пусты, то скрипт продолжает работу.
$sql="select pass from mysite where login='".$name."'";
Пишем запрос к базе mysql, который вернет нам значение поля pass, строки, где login=$name.
if ($show=mysql_query($sql))
Если запрос обработан без ошибок, то
$a=mysql_fetch_array($show);
Присваиваем переменной (ассоциативный массив) значение поля pass
if ($a['pass']!=$pass)
error("Не верное сочетание логин - пароль");
Если поле pass не соответствует тому, что ввел пользователь или тому, что хранится в сессии, то мы опять через функцию error выводим ему ошибку.
else
session_register("name","pass");
Иначе записываем переменные $name и $pass в сессию и продолжаем выполнять скрипт.
}
else
error("Ошибка запроса к базе данных");
}
?>
Если есть ошибка в запросе к базе mysql, то мы опять же выводим ошибку пользователю.

Итак, вначале каждой страницы, к которой нужно запретить доступ посторонним пишем:

<?
session_start();
// эта функция открывающая или продолжающая работу с сессиями. Она должна 
//быть задана в самом начале страницы до отправки заголовка страницы.
check();
//наша функция проверки.
?>

Теперь проверим логику скрипта. Если человек не заполняет одно из полей и нажимает кнопку "вход", то перейдя на страницу index2.php он получит надпись "Ошибка: Не указан логин или пароль".

Если он указывает неверный логин или пароль, то ему выпадает "Ошибка: Не верное сочетание логин - пароль".

Если же он все указывает верно, то попадет на страницу index2.php где вы храните свои тайны. За счет того, что логин и пароль записываются в сессию, юзер может бродить по вашему сверх тайному сайту авторизировавшись только один раз.

Возможные проблемы:

  • Нельзя заходить на сайт под разными именами.
  • Если человек раз зашел на сайт, то с его компьютера можно посещать этот сайт еще в течении некоторого времени (пока жива сессия), что не очень хорошо, если ты работаешь из Интернет салона.
  • Решение этих проблем будет описано в следующих статьях. Также будут затронуты вопросы: система обнаружения атак и попыток подбора пароля, с отправкой отчета по почте, функция вывода ошибок, с записью в лог файл.

До скорых встреч…

Интернет Байки от Rynet@News

Дни Windows 2000 сочтены. Корпорация Microsoft сообщила, что завершение "Mainstream" поддержки операционной системы Windows 2000 запланировано на 30 июня текущего года. Это означает, что после указанной даты у ОС начинается новая фаза жизни, называемая "Extended". В этом случае пользователям придется платить за техническую поддержку продукта. В прошлом году Microsoft официально сообщила, что она не выпустит Service Pack 5 для Windows 2000, но обязательно издаст "поправочный патч". Период "Extended" для двухтысячных окошек должен закончиться только в 2010 году. Это время позволит полностью заменить устаревшую ОС более новой на предприятиях.

Дети проводят все больше времени за компьютером. Выключить компьютер и предаться более простым развлечениям предлагают организаторы акции PC-Turnoff Week, которая пройдет с 1 по 7 августа этого года. Цель этой акции - повысить осведомленность общества об избыточном использовании компьютера дома. Данные, полученные в ходе исследования, проведенного Kaiser Family Foundation, свидетельствуют о том, что время, которое дети и подростки посвящают виртуальным развлечениям, значительно возросло. Подростки в возрасте от 8 до 18 лет проводят за компьютером, телевизором, игровой приставкой, в среднем, около 6,5 часов в день. Ежедневно дети стали тратить на электронный "виртуал" на час больше, чем пятью годами ранее. Это время они вычли из времени на общение с друзьями и времени на игры, требующие приложения реальных физических усилий. Все это должно заставить родителей более внимательно относиться к тому, как проводят свое свободное время их дети. Ведь никакой компьютер не заменит настоящего человеческого общения.


Новости по от Ymt.pp.ru

Nokia PC Suite 6.5

Сборник фирменных программ для работы с телефонами фирмы Nokia. Вы сможете делать резервную копию данных вашего телефона, синхронизировать записи, закачивать программы, игры, мелодии, фоновые картинки, отсылать SMS-ки. Программа работает с дата-кабелем или с ИК-портом. Win9*/ME/NT/2K/XP, Free, EN Скачать [21.87 Mb]
Iprit: у Вас ведь как у меня - тоже нокиа, да. Как я рад!

Monkey's Audio Coder v3.99

Есть wav-файл на 20 метров. Как его уменьшить на несколько метров (2-3) без потери качества ? Сжатие ~60-70%%. Винампом сжатый файл играется. О качестве воспроизведения могут сказать обладатели качественной аппаратуры. Легко распаковывается обратно в wav. Win 9*/ME/NT/2K/XP, Free, EN Скачать [2.6 Kb]

Slim Browser 4.05.002

Браузер, построенный на движке Internet Explorer, но с показом всех веб-страниц в одном многовкладочном окне, расширенной системой поиска, переводом веб-страниц и другого текста, системой автозаполнения разнообразных веб-форм, открытием и сохранением группы страниц одним кликом, автозакрытием всплывающих окон, поддержкой чтения RSS-лент и т.д. и т.п. Поддерживается подключение дополнительных панелей управления, задаваемых через XML. Естественно, имеются опции контроля за загружаемым контентом - откл/вкл загрузки графики, анимации, звуков и т.д.; интерфейс - многоязычный. Windows 95/98/NT/ME/2000/XP, Free,EN/RU Скачать [1.49 Mb]


Ну и наконец фотки моего рабочего стола. ...и не надого говорить мне что там бардак - это мой упорядоченный хаос!
На сегодня это все. Очередной выпуск нашей рассылки ждите как обычно в следующее воскресенье. Продолжение неизбежно…
© PHP Wars 2005, Все права на материалы принадлежат их авторам. Перепечатка или любое другое использование материалов рассылки разрешается только с письменного разрешения.

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpwars
Отписаться

В избранное