Почему бы не использовать адрес электронной почты в ссылке отписаться - PullRequest
7 голосов
/ 27 апреля 2011

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

Сейчас это:

xyz.net/unsubscrible?uid=123&email=user@domamin.com

Я настаиваюfor:

xyz.net/unsubscrible?uid=123&key=(encrpted_email_md5hash).

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

Обновление: хотя все ответы былипредлагая, как я должен это обезопасить, а НЕ объясняя, почему я должен это обезопасить, я считаю, что ответ do-ob наиболее уместен.

Ответы [ 8 ]

7 голосов
/ 27 апреля 2011

По той же причине, по которой у банков нет таких ссылок, как

bank.com/applycredit?ssn=123456789&name=john+smith&dob=19500101&married=true&address=...

это может быть легко перехвачено и интерпретировано.

7 голосов
/ 27 апреля 2011

Потому что тогда вы можете отписаться от кого-то еще. В идеале вы хотите использовать только ключ:

xyz.net/unsubscrible?key=<some unique cryptographic hash>

Я не смогу угадать идентификаторы и электронные письма и заставить кого-то совершить какое-то действие.

5 голосов
/ 27 апреля 2011

Практически в каждом бюллетене, который я получаю, внизу есть заявление об отказе, что-то вроде:

Это письмо было отправлено на YourName@Domain.com. Чтобы отписаться, нажмите на эту ссылку: хххх

Я считаю полезным явное перечисление своего собственного адреса электронной почты в бюллетене. Независимо от того, находится ли аддит по электронной почте в ссылке для отписки или нет, мне не имеет значения.


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

3 голосов
/ 27 апреля 2011

Почему бы и нет? Не включайте это , потому что это не нужно . Для чего используются эти данные? Предположим, что мы не включаем ничего, что нам на самом деле не нужно, в строку запроса.

Единственное, что действительно требуется, - это уникальный идентификатор. Похоже, у вас уже есть уникальный идентификатор в строке запроса: uid.

Потенциальная проблема: что мешает мне автоматически создавать URL-адреса для отказа от подписки и набирать ?uid= от 1 до 10 миллионов?

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

foo.com/unsubscribe?u=<guid>
1 голос
/ 27 апреля 2011

Поскольку вы не используете https, параметры запроса могут быть отслежены. Это серьезная проблема для мобильных пользователей и пользователей ноутбуков в местах с бесплатным Wi-Fi, таких как кафе.

И поскольку uid уже сопоставлен с адресом электронной почты, вам не нужно предоставлять идентификационную информацию, такую ​​как адрес электронной почты, для snoopers.

Вы должны убедиться, что отмена подписки не произойдет, как только они нажмут на ссылку. Это GET URL, который должен быть идемпотентным (см. Раздел 9.1 ), означая, что он не должен иметь полномочий для изменения базовой базы данных.

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

1 голос
/ 27 апреля 2011

Я мог бы дать вам очень хитрый ответ, но вы обнаружите, что наличие полного адреса электронной почты не так уж и плохая идея.

Наличие URL-адреса, содержащего адрес электронной почты, может использоваться злоумышленниками (например,. из общественных мест) хранить адреса и рассылать спам.Но если я полагаю, что в общедоступном месте есть что-то вредоносное, лучше установите кейлоггер на общедоступном компьютере и сделайте еще хуже.

Другой момент может быть следующим: если вы отправляете электронные письма ценным клиентам, злоумышленник может подделать электронную почтуадреса и отписаться от них, фактически уменьшая вашу коммуникационную силу.Для этого вы можете добавить криптографическую контрольную сумму к своему URL (не требуйте CAPTCHA, людям не нравится, когда вы отписываетесь), но затем шифруйте (или просто кодируйте неочевидным образом) весь почтовый адрес, который вы можете решить.проблема без использования двух параметров.

1 голос
/ 27 апреля 2011

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

1 голос
/ 27 апреля 2011

Я предполагаю, что uid - это «идентификатор пользователя».Если вы знаете идентификатор пользователя, то сможете определить адрес электронной почты по этому праву?Похоже, что электронная почта в URL ничего не делает.Я думаю, если вам не нужно включать личную информацию, то лучше не делать этого.

...