[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Безопасноть аккаунтов(пароли)
Страницы: 1, 2, 3
DedMorozzz
Как и обещал статейку про безопасность паролей. Вот она

Достаточно часто замечаю темы, жалобы, просто посты на разных форумах с общим содержанием - "меня взломали"
Этот пост посвящу именно безопасности аккаунта и разделю на 2 части. 1я, как обезопасить акаунт юзеров, будучи разработчиком. И 2я часть - непосредственно будучи юзером.

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

1. не быть наивным. К примеру "кто-то" просит дать свой акк, обещая сделать модератором или "королём Аськи". Если что-то необходимо сделать, то для этого логин и пасс - не нужны.

2. Обращать внимание на каком сайте авторизируемся. Если это сайт гугла или стим или форум. И мы внезапно разлогинились(обычно это крайне редко) обратите внимание на адресс. Вероятно вы вовсе не на сайте гугла, а на фишинговом сайте. И в конечном итоге введёте свои данные заведомо вору.
Вики Фишинговый сайт - http://ru.wikipedia.org/wiki/%D0%A4%D0%B8%...%B8%D0%BD%D0%B3

3. Пожалуй самый важный момент - использовать уникальные пароли
Это действительно самый важный момент и наилучшая защита.
Обычно пароли от какого-то форума или сайта воруются не для того, что бы можно было от вашего имени писать на этом самом форуме, а для того, что бы этот пароль использовать на других ресурсах.
Крайне часто юзеры используют один и тот же пароль и на только созданом форуме и на ресурсах, где финансы(вебмани, пейпал...).
Т.о. потеряв пароль на сайте где вы были 1й и послдний раз, так же можете потерять доступ ко всем остальным ресурсам.
Но тут возникает проблема - запоминание паролей. Если для каждого ресурса уникальный пароль - запомнить нереально
Но эта проблема возникала давно и как следствие имеются решения. Программы запоминалки паролей.
Вот обзор http://habrahabr.ru/post/125248/

Лично я начал с KeePass. Далее перешел на LastPass и меня в нём всё устраивает.
Ссылка на вики - http://ru.wikipedia.org/wiki/LastPass
Далее именно этот менеджер и буду рассмативать.

В 2х словах, за что стоит полюбить менеджеры паролей.

- Все используемые пароли - уникальные. Если вы потеряли пароль(ввели его не там где надо) или тот сайт взломали - ничего кроме пароля от того ресурса вы более не потеряете. Поскольку имеется возможность генерации пароля.

- Автоматическое заполнение, это можно выставить без спроса, а можно и с предложением заполнить.
Т.о. Если вы попали на фишинговый сайт, к примеру гугла и вы не залогинены и вас просят это сделать. И не обратили внимание на адресс, за вас это сделает менеджер. Если не предлагает заполнить - значит мы находимся где-то не там.

- Автозамена(шифрование) данных в инпутах с типом "pass". Даже сменив тип на "text" всё равно там будет шифрованые данные

- Возможность логиниться под разными акками в 2 клика(крайне удобно для теста)

- Забываем такую ф-ю как "восстановления пароля", всё помнят за вас


Но с другой строны хранить все пароли в 1м месте - так же рискованно, Даже не взирая на то, что пароль от ласт пасса - вы помните.
Этот момент так же предусмотрен - имеется возможность привязать акк, к гугл аутенификатору

Но тут получается следующая ситуация, если кто-то получит доступ к этому хранилищу - получит вообще доступ ко всему, ну в моём случае кроме фининсов.
Для этого имеется такой сервис у гугла https://play.google.com/store/apps/details?....authenticator2 Он для смартфонов. Учитывая, что смарт можно купить за 100$, то это не такая уж и проблема.
Работает это следующим образом - заходя в свой акк менеджера паролей - просит ввести сгенереный ключ в приложении на телефоне. Т.о. что бы у вас увели ваше хранилище, мало знать ваш логин и пароль. Необходимо физически владить ещё и телефоном. К слову - похожая система успешно практикуется и близардом.

Но так или иначе - не следует хранить все яйца в 1й корзине. Пароли от фининсов - лучше так же помнить, но это уже на ваше усмотрение.

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

На этом с юзерской частью всё


Теперь рассмотрим Серверную. Тут рассказывать можно намного больше, но я ограничусь лишь паролями.
Точнее хранением юзерских паролей
Свернутый текст

Крайне часто замечаю что при регистрации на каком либо ресурсе, мне с подтвержением на мыло приходит мой пароль. Или при восстановлении пароля - мне мой пароль приходил и это меня крайне пугало, до того как перешел на уникальные пароли.

Главное и основное правило - никогда и нигде не хранить пароли в открытом виде. Только хеш пароля.
К примеру md5 - http://ru.wikipedia.org/wiki/Md5
Как это работает - имеем пароль, его обрабатываем мд5 и на выходе всегда получаем 32 символа. Назад восстановить - невозможно.
Сверяется ввёл ли верно юзер пароль - достаточно просто. Юзер вводит пароль, его хешируем по тому же алгоритму и полученый хеш сверяем с тем что в базе. Если хеш совпал - юзер ввёл пароль верно

Но тут возникает следующая ситуация, что из безконечного количества комбинаций символов, всегда получается 32 символа. Т.о. получается что для разных комбинаций символов - будет соответствовать 1н хеш
Это называется коллизия http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%...%86%D0%B8%D0%B8

Т.о. если взломщик вашего сайта, получит данные с БД по юзерам, где будут емейлы и хеши паролей и можно по радужным таблицам подобрать коллизию.
Радужная таблица - http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%...%B8%D1%86%D0%B0

Как правило там хранятся хеши для мд5. Для того что бы сделать невозможным подбор по радужным таблицам - необходимо использовать соль.
Соль - это некая приставка к паролю, которая добавляется к паролю юзера, далее хешируется и добавляется в базу хеш уже с солью.
Т.о. Даже зная коллизию для сгенереного хеша, невозможно не зная соли узнать верный пароль
Делается следюущим образом - md5($pass.$salt)
Варианты хеширования можно придумать любые, хоть md5(md5($salt).md5($pass)), хоть md5((md5(md5(md5(md5($pass.$salt)))), но в целом md5(md5($salt).md5($pass)) - более чем достаточно
Т.о. если стянут данные юзеров из таблицы можно быть увереным, что пароли будут не доступны

Так же следует защититься от брутфорса или более продуктивного решения - перебор по словарю.
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%...%B0%D1%80%D1%8E
К примеру юзер использует в качестве пароля дату рождения или ещё какое-то очевидное значение. То имея емейл можно кидать разные пароли из словаря и в конечном итоге, если пасс простой - он будет найден.
Защита достаточно проста. После ввода 3-5 раз подряд не верного пароля - выводить каптчу. Учиывая что перебор ведётся програмным путём, то каптча будет неплохим уровнем защиты. А если и с каптчей раз 10 ввели не верно - ставить ограничение на ввод пароля. Не чаще чем раз в 15 минут.
Эти методы сводят на "нет" все попытки брутфорса, т.к. словари огромные и там перебор идёт миллионами попыток.

Вот на этом и закончу серверную часть и пост в целом


PS: если посчитаете интересным - закреплю

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.