#python #google-app-engine #web-applications #authentication #credentials
#python #google-app-engine #веб-приложения #аутентификация #учетные данные
Вопрос:
Каков общепринятый способ получения учетных данных для аутентификации (логин и пароль) при использовании webapp?
Я почти уверен, что они отправляются и / или интерпретируются иначе, чем остальная информация, поступающая через запрос, и, боюсь, я не могу вспомнить, откуда именно я должен их получить.
К вашему сведению: запросы принудительно передаются по протоколу https
Спасибо!
Ответ №1:
Если у вас включен HTTPS, отправка их вместе с запросом (обычно POST) является приемлемой, и это «стандартный» метод входа в систему.
Если вы хотите поумнеть, вы можете хэшировать пароль с помощью SHA1 на стороне клиента, чтобы даже sslstrip не отображал пароль в виде открытого текста (хотя это не предотвратит повторные атаки).
Комментарии:
1. Хэширование пароля на клиенте бессмысленно — это просто означает, что хэшированный пароль является, по сути, паролем.
2. Вот почему я сказал, что это не предотвратит повторные атаки. Печальная правда заключается в том, что люди повторно используют пароли. Они не должны, но они делают. Хотя я определенно не сторонник поощрения такого поведения, не помешает предпринять шаги для защиты этих пользователей. Хэш в стиле запроса-ответа будет работать хорошо — отправьте токен со страницей входа и сохраните его в переменных сеанса, затем выполните sha1 ($ salt $ password). Это делает невозможным воспроизведение и затрудняет взлом пароля (при условии, что соль длинная).
3. Я думаю, что люди повторно используют пароли, потому что в среднем больше работы по отслеживанию разных паролей для каждой используемой ими веб-службы, чем для борьбы с риском взлома учетной записи.
4. Вот почему я поддерживаю такие инициативы, как OpenID. Если у вас есть один логин, это, по крайней мере, одна точка, которая может быть надежно защищена. Пока их пароль относительно надежный, с ними все должно быть в порядке. И нет никаких оправданий, поскольку им нужно запомнить только один пароль!
Ответ №2:
Используете ли вы встроенную аутентификацию или пытаетесь создать свою собственную? В первом случае вы не можете получить доступ к учетным данным пользователя — просто получите необходимую информацию из объекта User. В последнем случае вы можете обрабатывать учетные данные любым удобным для вас способом — вы создаете свои собственные, и у App Engine нет волшебного способа определить, что вы обрабатываете имя пользователя или пароль.
Комментарии:
1. Прохладный. Я создаю свой собственный. Спасибо, Ник.