Общая авторизация пользователя Безопасность


0

Я создаю веб-сайт, который требует авторизации пользователя. Я впервые создаю веб-сайт, чтобы жить вживую, а также мой первый раз, пытаясь сделать любую форму авторизации. Следующим является мой план, скажите, пожалуйста, если у меня есть какие-либо явные дыры в петле, и если есть что-то еще, о чем я должен знать. В случае заинтересованности или релевантности я использую restful nodejs и mysql back end и backbone на лицевой стороне.

Вход в процессе:

  1. Пользователь пытается войти в систему, что посылает адрес электронной почты и пароль, и случайно сгенерированный ключ (не принято решение о количестве битов)..
  2. Сервер авторизации принимает эту информацию, шифрует адрес электронной почты и пароль и проверяет ее на значения в таблице user_auth базы данных авторизации. Если есть совпадение, он создает идентификатор сеанса.
  3. Затем сервер авторизации помещает идентификатор сеанса, адрес электронной почты и генерируемый пользователем случайный ключ в строку таблицы сеансов (в базе данных данных, к которой обращается главным образом сервер данных) и отправляет пользователю идентификатор сеанса и любой другие соответствующие данные страницы, которые шифруются с использованием идентификатора сеанса в качестве ключа.
  4. При успехе всего этого пользователь получает идентификатор сеанса и расшифровывает дополнительные данные и все будущие данные с использованием идентификатора сеанса.
  5. При каждом действии, предпринимаемом пользователем, клиент отправит адрес электронной почты и идентификатор сеанса, зашифрованный исходным случайно сгенерированным ключом, который был отправлен на сервер данных, и если идентификатор сеанса и адрес электронной почты совпадают, данные дешифруются используя ключ, а затем данные обрабатываются.

Я также, конечно, попытаюсь дезинфицировать все данные перед созданием запроса sql, будет также проведена проверка живой формы и валидация базовой системы. Пользователь mysql, который будут использовать серверы nodejs, не будет иметь разрешений на удаление, которые будут выполняться с помощью тегов и демон на задней панели.

Для создания учетной записи:

  1. Пользователь представит адрес электронной почты, пароль, имя, фамилию на сервер авторизации.
  2. Сервер авторизации разместит это вместе с datetime в таблице temp_user, и хорошо написанное электронное письмо будет составлено с идентификатором сеанса, встроенным в URL-адрес.
  3. Пользователь будет щелкать ссылку в электронном письме, на которое они будут отправлены, чтобы «ваша учетная запись была проверена» или что-то в этом роде. Щелчок по ссылке сохранит значение идентификатора сеанса в коде клиента и создаст случайно сгенерированный ключ, который будет отправлен на сервер. При успехе он фактически покажет пользователю страницу.
  4. На стороне сервера сервер авторизации поместит имя пользователя и пароль, зашифрованные, в таблицу user_auth базы данных авторизации, поместит первое и последнее имя в таблицу пользователя в базе данных и затем удалит (единственная таблица он будет иметь разрешения на удаление для) соответствующей строки в таблице temp_user.
  5. Теперь клиент и сервер должны быть на той же странице, что и в первом сценарии.

Если в какой-либо момент идентификатор сеанса является нулевым или не соответствует пользователю, будет предложено войти в систему снова и процесс начнется.

Есть ли что-нибудь, что мне не хватает?

1

Не изобретать велосипед.

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

Это, как говорится, в этом списке отсутствует. Я рекомендую читать OWASP Authentication Cheat Sheet и OWASP Session management cheat sheet. Также читайте OWASP top 10, поскольку многие из этих проблем могут привести к скомпрометированному сеансу или учетной записи.

Некоторые из самых больших проблем с дизайном: использование HTTPS для жизни сессии, никогда не шифрует пароли, они всегда должны быть хэшируются. Кроме того, многие могут ошибаться в «шифровании», это не волшебная палочка, а очень мало разработчиков реализовать это правильно. (Ведь никто не может взломать DOUBLE rot-13 шифрование, потому что его гребаный «зашифрованный» ... дважды).

  0

Я ценю вашу ссылку для сайта OWASP. Я искал что-то вроде этого и не смог его найти. 12 авг. 132013-08-12 18:27:04


2

Есть ли что-нибудь, что мне не хватает?

Да, вас кое-что не хватает. Я не знаком с Node.js, но могу гарантировать, что существуют существующие библиотеки аутентификации и авторизации.

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