Volrath
25-07-2017, 10:46
Доброго времени суток.
Никогда не разрабатывал движок для сайта с нуля, но очень хочется попрактиковаться и посверлить зубы через попу. Делать же на работе нефиг.
Прекрасно понимаю, что вся информация для авторизации на сайте хранится в таблицах в БД и извлекается оттуда при формировании запроса.
Сразу хочу оговорить, что такой "Заморочь" происходит с целью образовательной и хочется учесть максимальную степень безопасности, в частности:
-хранение логина и пароля происходит в разных таблицах
И тут у меня возникает трудность и появляется вопрос, в первую очередь, к людям, которые непосредственно работают в области разработки сайтов:
-"как это реализуете Вы"?
Т.е. я пришел к следующим умозаключениям:
1 - допустим, я храню "login" отдельно от "pwd" тогда у меня 2 таблицы: "tb_Users" с полями "id" и "login" \ "tb_Usr_data" с полями "id" и "pwd"
Впринципе, несложно понять, что по соответствующему id из одной таблицы можно найти соответствующий pwd из другой таблицы. И тут пропадает смысл хранения данных в 2-х таблицах, потому что если "злоумышленник" получает доступ к БД и открывает таблицу, то он может открыть вторую таблицу и найти соответствие. (о шифровании пароля я пока не говорю)
2 - второй момент. Запрос первично к таблицам происходит от "гостевого" пользователя в базу с целью прочесть требуемый логин и пароль, выходит, что у злоумышленника есть всегда доступ к прочтению данных из таблицы. Выходит, что обращение нужно всегда производить от имени уже введенного пользователя и при регистрации нового автоматически выполнять тригер или хранимую процедуру, разрешающую данному пользователю просмотр таблицы с паролями, с целью закрыть доступ для посторонних?
Но тут другой минус - с увеличением пользователей увеличивается шанс утечки информации от одного с его логином и вновь "злоумышленник" получает право на прочтение таблицы с паролями...
В общем, интересуюсь исключительно для самообразования, чтобы понимать как это работает. Большинство литературы пишется с целью "показать в общих чертах" и вопрос о безопасности не ставится вовсе. Либо просто пиарят тип данных "password" в СУБД и говорят, что этого достаточно и все хранят в одной таблице. Так ли это? Как вы реализуете? Не рекомендуйте использовать готовые среды разработки или движки типа "джумлы", "друпала" и т.д. если нужно, я конечно этим воспользуюсь, но, повторюсь, решил создать данную тему исключительно в самообразовательных целях.
Никогда не разрабатывал движок для сайта с нуля, но очень хочется попрактиковаться и посверлить зубы через попу. Делать же на работе нефиг.
Прекрасно понимаю, что вся информация для авторизации на сайте хранится в таблицах в БД и извлекается оттуда при формировании запроса.
Сразу хочу оговорить, что такой "Заморочь" происходит с целью образовательной и хочется учесть максимальную степень безопасности, в частности:
-хранение логина и пароля происходит в разных таблицах
И тут у меня возникает трудность и появляется вопрос, в первую очередь, к людям, которые непосредственно работают в области разработки сайтов:
-"как это реализуете Вы"?
Т.е. я пришел к следующим умозаключениям:
1 - допустим, я храню "login" отдельно от "pwd" тогда у меня 2 таблицы: "tb_Users" с полями "id" и "login" \ "tb_Usr_data" с полями "id" и "pwd"
Впринципе, несложно понять, что по соответствующему id из одной таблицы можно найти соответствующий pwd из другой таблицы. И тут пропадает смысл хранения данных в 2-х таблицах, потому что если "злоумышленник" получает доступ к БД и открывает таблицу, то он может открыть вторую таблицу и найти соответствие. (о шифровании пароля я пока не говорю)
2 - второй момент. Запрос первично к таблицам происходит от "гостевого" пользователя в базу с целью прочесть требуемый логин и пароль, выходит, что у злоумышленника есть всегда доступ к прочтению данных из таблицы. Выходит, что обращение нужно всегда производить от имени уже введенного пользователя и при регистрации нового автоматически выполнять тригер или хранимую процедуру, разрешающую данному пользователю просмотр таблицы с паролями, с целью закрыть доступ для посторонних?
Но тут другой минус - с увеличением пользователей увеличивается шанс утечки информации от одного с его логином и вновь "злоумышленник" получает право на прочтение таблицы с паролями...
В общем, интересуюсь исключительно для самообразования, чтобы понимать как это работает. Большинство литературы пишется с целью "показать в общих чертах" и вопрос о безопасности не ставится вовсе. Либо просто пиарят тип данных "password" в СУБД и говорят, что этого достаточно и все хранят в одной таблице. Так ли это? Как вы реализуете? Не рекомендуйте использовать готовые среды разработки или движки типа "джумлы", "друпала" и т.д. если нужно, я конечно этим воспользуюсь, но, повторюсь, решил создать данную тему исключительно в самообразовательных целях.