|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Теория разработки авторизации для сайта |
|
Теория - Теория разработки авторизации для сайта
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Доброго времени суток.
Никогда не разрабатывал движок для сайта с нуля, но очень хочется попрактиковаться и посверлить зубы через попу. Делать же на работе нефиг. Прекрасно понимаю, что вся информация для авторизации на сайте хранится в таблицах в БД и извлекается оттуда при формировании запроса. Сразу хочу оговорить, что такой "Заморочь" происходит с целью образовательной и хочется учесть максимальную степень безопасности, в частности: -хранение логина и пароля происходит в разных таблицах И тут у меня возникает трудность и появляется вопрос, в первую очередь, к людям, которые непосредственно работают в области разработки сайтов: -"как это реализуете Вы"? Т.е. я пришел к следующим умозаключениям: 1 - допустим, я храню "login" отдельно от "pwd" тогда у меня 2 таблицы: "tb_Users" с полями "id" и "login" \ "tb_Usr_data" с полями "id" и "pwd" Впринципе, несложно понять, что по соответствующему id из одной таблицы можно найти соответствующий pwd из другой таблицы. И тут пропадает смысл хранения данных в 2-х таблицах, потому что если "злоумышленник" получает доступ к БД и открывает таблицу, то он может открыть вторую таблицу и найти соответствие. (о шифровании пароля я пока не говорю) 2 - второй момент. Запрос первично к таблицам происходит от "гостевого" пользователя в базу с целью прочесть требуемый логин и пароль, выходит, что у злоумышленника есть всегда доступ к прочтению данных из таблицы. Выходит, что обращение нужно всегда производить от имени уже введенного пользователя и при регистрации нового автоматически выполнять тригер или хранимую процедуру, разрешающую данному пользователю просмотр таблицы с паролями, с целью закрыть доступ для посторонних? Но тут другой минус - с увеличением пользователей увеличивается шанс утечки информации от одного с его логином и вновь "злоумышленник" получает право на прочтение таблицы с паролями... В общем, интересуюсь исключительно для самообразования, чтобы понимать как это работает. Большинство литературы пишется с целью "показать в общих чертах" и вопрос о безопасности не ставится вовсе. Либо просто пиарят тип данных "password" в СУБД и говорят, что этого достаточно и все хранят в одной таблице. Так ли это? Как вы реализуете? Не рекомендуйте использовать готовые среды разработки или движки типа "джумлы", "друпала" и т.д. если нужно, я конечно этим воспользуюсь, но, повторюсь, решил создать данную тему исключительно в самообразовательных целях. |
|
Отправлено: 10:46, 25-07-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Volrath:
Цитата Volrath:
Цитата Volrath:
Цитата Volrath:
|
||||
Отправлено: 17:49, 25-07-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Цитата Volrath:
Цитата Volrath:
|
||
Отправлено: 18:12, 25-07-2017 | #3 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать в маленьких наколенных вэбсайтах пароль хэшируют, потому что инфраструктура неподконтрольна владельцу, и БД может слить младший техник ЦОДа
в серьёзных системах пароль хранится как есть на площадке с особым режимом доступа, а хэшируется/шифруется ещё на стороне клиента, чтобы опять же младший техник ЦОДа не мог узнать слишком много |
Отправлено: 20:02, 25-07-2017 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать ОК. Про хэш я уже сказал - "опускаем" используем термин "пароль"
Из всего сказанного имеем: таблица "Usr" с полями "log"\"pass" html - страница с полями для ввода "log"\"pass" при нажатии кнопки "sign in" пытается запустить скрипт для проверки связки "log"\"pass" вопрос: с какими правами этот скрипт обращается к БД? Я к тому, что если делать запрос через тот же .php нужно усатновить сперва соединение с БД, чтобы проверить "есть ли в таблице 'Usr' хэш 'pass', где 'log' = введенный 'log' " Если это так, то в скрипте указывается пользователь и пароль у которого есть права на чтение из таблицы "Usr". Как результат возникает еще вопрос: -"как защащают доступ из вне, чтобы потльзователь не получил доступ к скриптам"? Например: можно попробовать скачать файл "www.mysite.net/scripts/signin.php" Как это реализуется в "нормальных" движках? Если закрыть доступ, то будут ли права на серевере у скриптов для обращения из папки \scripts\ в папку ..\sites\account.html? Каким способом делается "отображение" скрытых элементов? Например: вот страница index.html на ней поля для входа, когда прошел верификацию, то отображается та же самая страница, но отображено имя пользователя или информация для конкретного пользователя, или становятся доступными скрытые возможности для редактирования или еще чего-либо...? Например, читаю данынй форум, могу отвечать, если выйти, то могу читать тот же форум, но ответ недоступен для меня. Какие способы? Не просто любые "как можно придумать", а "как это принято в нормальном промышленном смысле сайтостроения" |
|
Последний раз редактировалось Volrath, 26-07-2017 в 11:43. Отправлено: 11:28, 26-07-2017 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Volrath:
Volrath, у Вас не возникало неодолимого желания взять любой известный открытый движок — даже не CMS, а банального форума, того же PunBB или phpBB — и просто посмотреть, как там сие реализовано, а? |
|
Отправлено: 12:06, 26-07-2017 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать спасибо, конечно, погляжу, но еще один вопрос:
-"получается, мы устанавливаем сессию, потом при вводе логина\пароля запускаем (например) .php и передаем ему параметры логин\пароль, в результате скрипт нам выдает страницу либо нужную, либо информативную об ошибке"? блеать, но если все так, то в любом случае файл .php должен устанавливать соединение с БД! значит можно его попробовать качнуть и найти параметры подключения. -"как с этим борятся обычно?" |
Отправлено: 12:56, 26-07-2017 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Попробуйте. Качните. А потом таки сделайте то, на что я Вам намекаю.
|
Отправлено: 13:38, 26-07-2017 | #8 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Цитата Volrath:
Опасно ли это? Нет, не опасно. Если только скрипты не позволяют кому угодно выполнять произвольные запросы. Ну то есть допустим у нас есть скрипт login.php, котооые при POST запросе к нему извлекает аргументы login и pasword, санитизирует их (в смысле экранирует управляющие символы, исключая возможность вставить произвольный SQL код в запрос), после чего выполняет SQL запрос и формирует ответ. Если логин или пароль не указан - перенаправляет на страницу логина с сообщение о неполных данных. При этом никакие данные из базы клиенту не отправляются. Цитата Volrath:
|
||
Отправлено: 17:20, 26-07-2017 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Bentley и Vertu заключают партнёрство для разработки смартфонов | OSZone News | Новости информационных технологий | 0 | 08-07-2014 02:30 | |
C/C++ - Подскажите среду разработки для symbian 9.4 | tier_skg | Программирование и базы данных | 1 | 28-11-2011 17:01 | |
Теория: CGI-скрипты для рассылки спама | M1sha | Хочу все знать | 4 | 20-05-2010 23:23 | |
*Теория* | Классы C++ для представления winapi32 | pva | Программирование и базы данных | 5 | 11-04-2005 11:28 | |
*Теория* | Определите несколько формул для Pascal | MaxxSoftware | Программирование и базы данных | 2 | 23-02-2005 19:56 |
|