or
: A or B
: возвраты A
, если bool(A)
True
, иначе возвращаются B
and
: A and B
: возвраты A
, если bool(A)
False
, иначе возвращаются B
Для хранения большей части того образа мыслей, мой логический xor definintion был бы:
def logical_xor(a, b):
if bool(a) == bool(b):
return False
else:
return a or b
Тот путь это может возвратиться a
, b
, или False
:
>>> logical_xor('this', 'that')
False
>>> logical_xor('', '')
False
>>> logical_xor('this', '')
'this'
>>> logical_xor('', 'that')
'that'
В обоих случаях личная информация (временный пароль или ссылка для сброса) передается по одному и тому же носителю. С этой точки зрения разницы в безопасности нет. Тем не менее, сбросить ссылку как несколько преимуществ: Вы заставляете пользователя выбрать новый пароль. Как только он это сделает, ссылка станет недействительной и ею нельзя будет злоупотреблять. Временные пароли, напротив, обычно не такие временные, как вам хотелось бы. Даже если вы заставите пользователя выбрать новый пароль при следующем входе в систему, он, скорее всего, снова введет временный.
Кроме того, вы можете зарегистрировать IP того, кто использует ссылку сброса, так что имейте хоть что-нибудь в случае необходимости передать властям.
Есть ли какие-либо существенные причины безопасности, чтобы предпочесть один метод лучше другого?
Да. Если вы пойдете по маршруту временного пароля, то любой может раздражать пользователя, постоянно нажимая ссылку сброса и вводя адрес электронной почты этого пользователя. Если вы используете ссылки для сброса пароля, пользователь может просто проигнорировать их и удалить электронные письма.
Существует множество более безопасных способов сбросить пароль. Все они очень неудобны для пользователей и дороги в обслуживании. Если каждый пользователь отправит вам образец ДНК и отпечатки пальцев, а затем потребует, чтобы они явились лично для проверки, это поможет вашей безопасности. Я удивлен, что ваша совершенно секретная организация позволяет вам получать советы по безопасности stackoverflow. Помимо шуток, насколько безопасным должно быть ваше приложение? Действительно ли злоумышленники сбрасывают пароли ваших пользователей, а затем получают доступ к их электронной почте?
XKCD всегда говорит это лучше всего http://xkcd.com/538/
Нет лучшего способа для широкой публики. Если это внутреннее приложение, вы, вероятно, могли бы отправлять зашифрованные электронные письма, которые пользователи должны декодировать с помощью PGP, но это никогда не сработает для внешних пользователей, если у вас нет очень дорогостоящего, нишевого продукта.
Если электронная почта -mail отсутствует, вам придется использовать что-то вроде контрольных вопросов, но у них есть свои (более существенные, на мой взгляд) проблемы. Проблемы включают: