модель / схема аутентификации узла - PullRequest
0 голосов
/ 19 марта 2012

(xposted from nodejs@googlegroups.com)

Какая схема локальной аутентификации лучше всего хранится?

Я нашел несколько:

  • http://dailyjs.com/2011/01/10/node-tutorial-9/
  • github.com / ncb000gt / node.bcrypt.js / дерево / мастер / примеры
  • github.com / Turbo87 / локомотив-паспорт-шаблон / blob / master / app / models /account.js (похоже, что он взят из примера bcrypt)

похоже, что mongoose-auth также реализован из примера bcrypt:

  • github.com / bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js

и я не могу понять, как Everyauth генерирует пароли.

  • github.com/bnoguchi/everyauth/blob/master/lib/modules/password.js

... и я нашел тонны, которые генерируются на основе Math.random (Date.now * some_number) .... что-то в этом роде - не выглядело правильно, поэтому я точно не помню.

Каков наилучший метод для обеспечения безопасности?

1 Ответ

0 голосов
/ 20 марта 2012

Локальное хранение аутентифицированных учетных данных - один из худших возможных способов аутентификации клиентов. Для этого вам нужно использовать криптографию, которая вводит возможность грубой силы. Хорошим примером того, как это идет ужасно неправильно, является Oracle Padding Attack, используемая против .Net .

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

Кроме того, текущее время даты НЕ СЛУЧАЙНОЕ ЗНАЧЕНИЕ , оно никогда не должно передаваться для расчета случайного значения. Вам нужно будет отслеживать время, чтобы токен сеанса мог истечь. Ваш секрет должен быть создан с помощью магазина энтропии, как /dev/random

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