Безопасность пользователей в базе данных моего сайта - PullRequest
1 голос
/ 23 июля 2010

Допустим, у меня есть веб-сайт mysite.com, на котором будут храниться некоторые конфиденциальные личные данные (связанные с банком). На этом веб-сайте у меня есть база данных Oracle с таблицами USERS, в которой будут храниться логины и пароли пользователей из mysite.com

У меня есть несколько вопросов:

Как хранить пароли, шифрование, конечно, но какие?

Каким должен быть процесс регистрации?отправить электронное письмо, чтобы подтвердить, действительно ли это необходимо?

Какие-нибудь полезные советы по процессам входа в систему в целом?

Для информации, я использую Oracle APEX

Ответы [ 4 ]

5 голосов
/ 23 июля 2010

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

Не пытайтесь делать это самостоятельно.«Любой может создать систему безопасности, которую они сами не смогут сломать».- Я думаю, что это цитата Брюса Шнайдера.Обратите внимание.

Отредактируйте, чтобы реагировать на комментарий:

Даже при работе с программным обеспечением для частных финансов вы, вероятно, имеете дело с номерами банковских счетов, номерами социального страхования и так далее.Таким образом, вы, вероятно, все еще сталкиваетесь с различными правилами.

Системы, такие как OpenID и Oracle SSO, охватывают только аутентификацию.Правила также предписывают минимальные меры безопасности относительно того, как вы должны хранить данные в своей базе данных, как вы должны обращаться с резервными копиями, как вы должны обращаться с людьми (например, разработчиками), обращающимися к базе данных, и так далее, и так далее.Если вы не будете следовать этим указаниям и что-то пойдет не так, вы несете ответственность.

Я настоятельно призываю вас обратиться за помощью к кому-то, кто разбирается в этой области.Объясните им, что вы хотите сделать, что вы хотите хранить, и так далее.Они могут сказать вам, какие (если таковые имеются) правила применяются.Только тогда вы сможете начать смотреть, как вы собираетесь это реализовать, и какие готовые компоненты вы можете использовать.

3 голосов
/ 23 июля 2010

Ни при каких обстоятельствах пароль не должен шифроваться.Использование шифрования подразумевает, что есть функция дешифрования, и это будет нарушением CWE-257.Пароли всегда должны быть хешированы, и SHA-256 - отличный выбор.Пароль должен быть добавлен с криптографическим одноразовым номером .Системы аутентификации очень просты, если учитывать другие системы безопасности, на которые вы полагаетесь.

Вы должны быть ОЧЕНЬ ОСТОРОЖНЫ , чтобы убедиться, что ваша система не содержит SQL-инъекций.Я рекомендую получить копию Acunetix ($) NTO Spider ($$$) или wapiti (с открытым исходным кодом).В любом случае параметризованные запросы - это путь.

0 голосов
/ 23 мая 2011

Пароли должны храниться как соленый хеш.Используйте уникальную соль для каждого.Для хеширования есть лучшие альтернативы, но SHA1 подходит для многих целей (он доступен через DBMS_CRYPTO).Еще лучше перейти на SHA256 (использование http://jakub.wartak.pl/blog/?p=124).

Подтверждение регистрации пользователя действительно зависит от сайта. Если вы хотите, чтобы пользователи быстро входили в систему, вы можете позволить им войти после регистрации в течение ограниченного времени, пока они не нажмут на активацию.ссылка. Все, что действительно дает вам активация, - это реальный адрес электронной почты, который нужно связать с пользователем. Также учтите наличие каптчи, чтобы предотвратить автоматическую / скриптовую регистрацию.

При входе в систему должна выполняться временная блокировка после некоторых недопустимых попыток (и оповещения администраторовпри успешном блокировании). Усиление сложности пароля тоже.

OWASP дает очень хороший общий совет по безопасному дизайну веб-приложения. Википедия имеет некоторую информацию о Oracle Apex Security . В другом комментарии было предложено использовать инструмент веб-тестирования, такой как Acunetix или NTO Spider (вместо этого я бы предложил Burp ), также есть инструмент для тестирования безопасности приложений Apex посредством анализа источника (ApexSec ) - (раскрытие, я работаю в этой компании).

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

0 голосов
/ 23 июля 2010

Посмотрите на ответы на этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...