Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Запороленный сайт

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Пт Июн 18 2004 01:00    Заголовок сообщения: Запороленный сайт Ответить с цитатой

Тут уже пытались спросить про это, но тама ушла от темы Smile

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

Своим умом я понял следующее...
После того, как пользователь вводит регистрационные данные, они должны сравниваться с хранящимися в базе, пользователь должен пересылаться на одну из секретных страниц, а также в каких-то глобальных переманных должны сохранятся данные о пользователе, чтобы можно было на секретных страницах проверить, авторизован ли пользователь или нет.

В принципе все понятно, но остаются несколько вопросов, которые ставят в тупик.
1) Как вообще правильно сравнивать введенные данные с данными в базе, подходит ли для этого запрос вида
Код:

SELECT UserID FROM Users WHERE UserName=$txtLogin AND UserPass=$txtPass

или нужно применять что-то хитрее.
2) В момент передачи данных от формы в скрипт-обработчик данные тоже нужно как-то зажитить, потому как они отправляются в открытом виде. А вообще на сколько реально перехватить эти данные?
Если передаваемые данные все таки зашифровать, тогда приведенный выше запрос выполнить неполучится без предварительной расшифровки данных (предпологается что данные в базе не зашифрованны)
3) Чтобы на секретных страницах проверить авторизован ли уже пользователь, нужно иметь какие нибудь данные о пользователе. Вопрос - какие. Можно конечно при авторизации запоминать логин и пароль и проверять их снова при входе на каждую секретную страницу. Но в чем их запоминать? В куки или в сесии. С куками все понятно - это не вариант, их относительно легко спереть. А вот сессия? У пользователя хранится только идентификатор сессии, а переманные, создаваемые в сессии где хранятся? И что даст злоумышлиннику перехват номара сессии? Если в качестве информации о пользователе хранить не имя и пароль а что-то еще - тогда что? В некоторых скриптах видел, что факт авторизации проверяется простой проверкой открыта ли сессия, но помоему это слабовато, или нет? Как вообще можно подделать сессию?

Прошу всем кто что-то знает высказаться, возможно вместе мы найдем оптимальное решение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Пт Июн 18 2004 05:59    Заголовок сообщения: Ответить с цитатой

Соввсем недавно, кстати, говорилось об этом.
Используй хеш-функцию md5. Каждому паролю она сопоставляет уникальную строку хеша. Принцип в несимметричности кодирования/декодирования Т.е. Закодировать легко, раскодировать НЕВОЗМОЖНО. При регистрации просишь пароль и конвертишь в md5. Сохраняешь в базу. Если кто достанет, восстановить не сможет. Когда юзер логинится, конвертишь в md5 его пароль и сравниваешь с тем, что в базе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Пт Июн 18 2004 16:17    Заголовок сообщения: Re: Запороленный сайт Ответить с цитатой

Почитай про SSL и сессии все чудно расписано в MSDN (если asp сервер)
Вернуться к началу
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Пт Июн 18 2004 16:34    Заголовок сообщения: Ответить с цитатой

Нет не ASP, предпологается использовать PHP и про SSL реч вообще не идет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
wildwind



Зарегистрирован: 03.02.2004
Сообщения: 268
Откуда: Москва

СообщениеДобавлено: Пт Июн 18 2004 19:45    Заголовок сообщения: Re: Запороленный сайт Ответить с цитатой

ZooY писал(а):
1) Как вообще правильно сравнивать введенные данные с данными в базе, подходит ли для этого запрос вида
Код:

SELECT UserID FROM Users WHERE UserName=$txtLogin AND UserPass=$txtPass

или нужно применять что-то хитрее.
...
3) А вот сессия? У пользователя хранится только идентификатор сессии, а переманные, создаваемые в сессии где хранятся? И что даст злоумышлиннику перехват номара сессии? ... Как вообще можно подделать сессию?


1) А $txtLogin и $txtPass это bind-переменные или просто подстановочные? Если второе, то можешь поиметь хак под названием sql injection.

3) Переменные сессии хранятся на сервере. Для хранения идентификатора сессии есть два метода, и они общие для всех серверов и языков. Первый - id хранится в куках. Второй - id кодируется в URL. (Попробуй отключить куки и зайди на mail.ru - увидишь.) Перехват идентификатора дает возможность отправлять запросы от имени того пользователя. Но это если сервер не проверяет еще и IP адрес, а такое бывает редко.
Подробнее читай в MSDN.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Вс Июн 20 2004 13:42    Заголовок сообщения: Ответить с цитатой

Цитата:
Перехват идентификатора дает возможность отправлять запросы от имени того пользователя. Но это если сервер не проверяет еще и IP адрес, а такое бывает редко.

А как узнать, проверяет сервер или не проверяет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Гость






СообщениеДобавлено: Вс Июн 20 2004 16:18    Заголовок сообщения: Ответить с цитатой

В доке на сервер смотри про поддержку сессий. Часто айпишник кодируется в идентификаторе сессии.
Вернуться к началу
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Вт Июн 22 2004 15:36    Заголовок сообщения: Ответить с цитатой

Вот нашел очень интерестную статейку http://www.tltdev.net/articles.php?id=2&sid=a189d55e9b047217acce2da8bdcbe887
Все конечно прикольно, только есть одна проблема - как создавать пользователей. Т.е. ввожу я логин и пароль нового пользователя, а что потом... В статье подразумевается (да и все об этом говорят), что пароли хранятся в базе в захешированном виде. Пароль захешировать я могу у клиента. Но получается что посылать на сервер мне его придется не в запороленном виде (как в статье при авторизации), а в таком захешированном, иначе если я его запоролю приведенным способом, я не смогу извлеч на сервере хеш пароля, потому как кодируется все необратимым шифром.
Получается, что если злоумышленник перехватит пароль при создании пользователя - он сможет им воспользваться.
Что делать в такой ситуации? Применять какой-либо обратимый шифр при создании пользователя для отправки пароля на сервер? Или может есть что попроще?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Astaroth



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Вт Июн 22 2004 16:35    Заголовок сообщения: Ответить с цитатой

Кстати, если разрешено то юзай файлы .htacess - легко и непринужденно закрываешь часть директорий сайта от незванных гостей либо по паролю, либо по ip, либо и так и сяк. И ненадо мучаться с самопальной авторизацией! Very Happy Apache все за тебя сделает!
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GREA



Зарегистрирован: 14.05.2003
Сообщения: 758
Откуда: Новосибирск

СообщениеДобавлено: Вт Июн 22 2004 20:13    Заголовок сообщения: Ответить с цитатой

А потом создаешь новую запись о пользователе в базе данных или в файле.
В простейшем случае это пара [login,md5(password)]
И в файле куча таких записей. При добавлении новой, нужно следить, чтобы старые не стирались (если пользуешь файл, а не db)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Ср Июн 23 2004 10:48    Заголовок сообщения: Ответить с цитатой

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



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Ср Июн 23 2004 12:05    Заголовок сообщения: Ответить с цитатой

а в чем проблема лишний каталог создать? дажи идеология будет верной - то что не для всех лежит отдельно. и сразу заморочки с дырявыми скриптами пропадают - в апаче все реализовано намного серьезнее чем ты сможешь наваять ручками. кстати, опять же - чем отличаются "секретные" файлы от раздела администрирования? по сути ничем - кому-то можно, кому-то ни-ни.
в общем я своё мнение высказал, заморачиваться с самопалом имеет смысл только если есть объективные причины не создавать отдельный каталог. они есть? если нет, то .htacess тебе в руки
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Ср Июн 23 2004 13:37    Заголовок сообщения: Ответить с цитатой

они есть - Windows-хостинг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Ср Июн 23 2004 14:33    Заголовок сообщения: Ответить с цитатой

А если все таки использовать SSL, какие неудобства может терпеть пользователь, и зависит ли возможность использования SSL от обозревателя?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Ср Июн 23 2004 15:02    Заголовок сообщения: Ответить с цитатой

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



Зарегистрирован: 17.05.2004
Сообщения: 453
Откуда: Питер

СообщениеДобавлено: Ср Июн 23 2004 16:03    Заголовок сообщения: Ответить с цитатой

От чего защититься???
_________________
Не очеловечивайте компы - они этого не любят!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Чт Июн 24 2004 10:48    Заголовок сообщения: Ответить с цитатой

В статье, которую я уже приводил (http://www.tltdev.net/articles.php?id=2) чел говорит, что, цитирую: "Стандартный механизм сессий не позволяет хранить дополнительную информацию о каждой сессии. Поэтому придется переопределить управляющие функции, а сами сессии хранить в БД". В БД, в частности он пишет IP-адрес. Вопрос - а разве его нельзя хранить в самой сессии, какая разница то?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ZooY



Зарегистрирован: 15.01.2002
Сообщения: 210
Откуда: Россия, Москва

СообщениеДобавлено: Чт Июн 24 2004 10:51    Заголовок сообщения: Ответить с цитатой

Astaroth писал(а):
От чего защититься???

Я конечно не так выразился, защитится от перезвата нельзя, пытаются сделать перехват бесполезным, так скажем, но тем не менее вопрос остается, на сколько реален перехват трафика?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...