Насколько безопасной должна быть активация учетной записи? - PullRequest
1 голос
/ 10 октября 2011

Я пишу процесс активации учетной записи с нуля в Django, и вот мой основной мыслительный процесс:

Создайте модель как:

class UserAccountActivation(models.Model):
    lock = models.CharField(max_length=16)
    key = models.CharField(max_length=16)

При необходимости сгенерируйте значения блокировки и ключа, используя такую ​​функцию:

def generate_entry():
    """Generate a random alphanumeric string between 8 and 16 characters long."""
    ''.join(random.choice(string.ascii_lowercase + string.digits) for x in range(random.randint(8,16))

Составьте ссылку, подобную этой:

r'^activate/(?P<lock>\w{8,16})/(?P<key>\w{8,16})/?$'

И отправь. Когда они нажимают на ссылку, я активирую аккаунт и отключаю ключ активации.

Первоначально я думал о хэшировании случайных строк в качестве дополнительной меры предосторожности, но это кажется ненужным, и было бы довольно долго иметь два ключа длиной 32 в моем URL:

account/12345678/12345678
    or
account/12345678901234567890123456789012/12345678901234567890123456789012

Это безопасный и рекомендуемый способ активации аккаунта? Нужно ли даже иметь произвольную длину в строках?

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Хорошо иметь переменную длину, чтобы она не восприимчива к временным атакам .

Кроме того, встроенный случайный код Python не является действительно криптографически безопасным, поэтому всегда предпочтительнееиспользуйте sha из hashlib или системную случайную последовательность, сгенерированную через linux, которую вы можете получить, сделав вызов sys.

1 голос
/ 10 октября 2011

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

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

...