Используя шифрованный адрес электронной почты, имя пользователя в качестве ссылки для отказа от подписки - PullRequest
2 голосов
/ 24 февраля 2012

У меня какая-то страница отписки.

Моя идея - использовать метод get с шифрованием. например:

unsubscribe.php? Почта = XXXXXXXXXXXXXXXX & UID = xxxxxxxxxxxxxxxxxx

Он может автоматически отменить подписку получателя, как только он нажмет на ссылку.

Я собираюсь зашифровать данные, используя sha1, поэтому проблема в

1) это безопасно? 2) Должен ли я сделать 2 дополнительных поля для зашифрованного uid и почтового адреса?

Спасибо

Ответы [ 2 ]

5 голосов
/ 24 февраля 2012

Не шифровать - вместо этого создайте случайный ключ, который вы сохраните в своей базе данных и получите, когда пользователь перейдет по ссылке отказа от подписки! Гораздо проще и безопаснее.

email            |   random_key
-------------------------------
pekka@gmx.de     | dsadfdsfsaf2
gnoggo@gnoggo.com| dfssf32e34fa

ссылка для отписки:

unsubscribe.php?key=dfssf32e34fa  <---- gnoggo@gnoggo.com
4 голосов
/ 24 февраля 2012

Абсолютно нет!

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

Кроме того хеширование не является шифрованием ...

Вместо этого создайте длинную случайную строку (не менее 40 символов) и сохраните ее в базе данных для этого пользователя. Затем добавьте это на ссылку отписки по почте. Таким образом, нет никакой вероятности утечки данных ...

Чтобы сгенерировать случайную строку, вы можете использовать функцию, подобную этой:

function makeRandomString($bytes) {
    $seed = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($seed) - 1;
    $return = '';
    for ($i = 0; $i < $bytes; $i++) {
        $return .= $seed[mt_rand(0, $len)];
    }
    return $return;
}

$random = makeRandomString(40); // 40 character random string...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...