La façon de traiter avec de longs liens HTML dans les mails
J'ai cherché sur le web et je peut trouver deux solutions:
- Utiliser une URL shortner.
- Utiliser des crochets
<
>
pour permettre l'insertion d'espaces. Cela s'applique uniquement à la plaine-des emails en texte.
Je suis l'envoi d'e-mails HTML qui contient des informations sensibles, comme la récupération de mot de passe de liens et d'auto-authentification des liens. Ces liens sont, de par leur nature, assez longue. Facilement plus de 70 caractères ou quelle que soit la limite arbitraire est imposé sur l'e-mail organes.
Évidemment, je ne peux pas utiliser n'importe quelle forme d'URL-shortning car elle permettrait de contourner toute mesure de sécuriser la cryptographie technique que j'ai utilisé pour les liens.
Je suppose que le plus grand problème est que les liens ne sont pas emballé joliment par les clients de messagerie. Le petit mot gentil d'habillage est pris en charge en CSS3 technique, il n'existe aucun moyen de MS Outlook sera jamais à l'appui de cette.
Comment puis-je faire si les liens ne sont pas visuellement perturbateur et, éventuellement, facile à copier-coller dans le cas d'un client de messagerie dysfonctionnement?
Exemple
Si le lien ne semble pas fonctionner, essayez de le copier-coller dans votre navigateur:
hxxp://development/#auth/YoxOntz0Oj0ExOiJfcmFuG9tbmVzcyI7czoxoti6kjsykv0qmgmuz1pfzvq5ykrqndzpr200unl60dglpnlhzzc9qceveh0lvv2nvvlpwwfcwwlf0vjryc0p4akyzclj0gtkjmslgxco0aetds0futlbvsxaxuvhccgdrngphmvl5ugzmrfvacdvsq1bqcu0tkylnxz0fqyxpjtknqts9lv29xsk4ydgtyefpndv0c2vlmerubeywc08xuwu5axr0goxl0bvfpcjlxegzjue100s0o1l1fcmq4mmhodm5lusi7fq
Remarques supplémentaires:
Je ne veux pas que mes liens d'expirer. Si je veux qu'ils expirent à tout ce que j'avais un délai de mois, pas en heures. Ces liens ne sont pas seulement le mot de passe de récupération des liens.
L'utilisation d'un algorithme qui génère des url raccourcies? MD5 toujours parfait pour cela.
Tant que vous êtes en utilisant un algorithme de chiffrement à générer de la valeur aléatoire, il n'a pas d'importance comment vous hachage. Par exemple, si vous êtes à la génération de la chaîne à l'aide de openssl_random_pseudo_bytes, vous pouvez même juste urlencode ou base64encode. Il est seulement important de vous assurer que vous ne pouvez pas prédire la chaîne et qu'il a suffisamment d'entropie pour éviter les attaques par force brute.
Je ne peux pas utiliser
md5
parce qu'il est lisible de l'information dans l'URL (j'ai occulté l'exemple). Je suis en utilisant openssl_random_pseudo_bytes pour nourrir quelques-unes des techniques de cryptographie, mais que l'URL contient des données réelles "juste" de l'aléatoire n'est pas suffisant. Ce serait la même qu'à l'aide de l'URL-shortning.OriginalL'auteur Halcyon | 2012-09-12
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le propriétaire de Microsoft word-break:break-tous; ?
Ce qui a le mieux fonctionné pour moi (meilleure compatibilité entre les fournisseurs):
Testé sur: MS Office 2007/2010, outlook.com, hotmail.com, gmail.com, yahoo.com (yahoo ne s'affiche pas bien)
Même si cela a été modifié pour inclure
<p>...</p>
j'aimerai fortement décourager l'utilisation des étiquettes de paragraphe HTML e-mail si l'espacement est impotant depuis les clients de messagerie les interpréter différemment.J'ai vérifié certains des plus grands fournisseurs de messagerie en ligne et ce code semble fonctionner. J'ai mis à jour la réponse avec le code qui fonctionne le mieux pour moi (meilleure compatibilité entre les fournisseurs).
REMARQUE: Cela casse le mot de l'habillage de texte normal! Vos paroles seront coupure au milieu de tous les clients si elles sont contenues dans une balise avec ce style.
OriginalL'auteur samanthasquared
Dans les e-mails Html html
Si vous envoyez des e-mails html, ce qui est erroné avec:
Si les liens sont l'obtention de déformation lorsque vous envoyez des e-mails html - le problème est de savoir comment vous envoyez des e-mails, pas le destinataire de l'email du client.
Plus court de hachage
Est un super long de hachage (hash, ou est-il crypté?) - elle vraiment nécessaire? À l'aide de hachage qui est assez long pour ne pas être brute forcé avant l'expiration de quoi être suffisant. Demander aux utilisateurs de copier et de coller une chaîne de caractères qui est évidemment à envelopper ne va pas aider l'utilisateur, c'est juste pour pousser un problème de développement sur l'utilisateur.
<textarea>
ne fonctionne pas dans Outlook (et je suppose que la plupart des autres programmes de messagerie). La balise est complètement ignoré.Générant plus courte hachages est certainement quelque chose que j'envisage, mais même un simple
base64_encoded
sha512
de hachage est sacrément long.Je pense que je l'ai expliqué, peut-être évidemment pas assez: certains liens sont auto-authentification des liens (en sautant d'une explicite de l'utilisateur de connexion). Le lien que vous avez posté sur le sha1 de sécurité n'est pas applicable depuis un attaquant pourrait facilement apprendre plus d'informations sur la façon dont les valeurs de hachage sont générés. C'est une réalité du fonctionnement de l'application, et pas seulement une attaque aveugle sur une table de hachage. Je downvote le commentaire si je le pouvais, parce que c'est dangereux de penser au sujet de la sécurité de cette façon.
Il me semble que vous êtes emailing utilisateurs de l'authentification cryptée url - au lieu de leur montrer le lien sur une page web sécurisée où ils peuvent agir en conséquence (faites-le glisser à vos favoris). Il n'a pas d'importance combien de temps vous faites de la valeur de hachage si elle apparaît en clair dans un e-mail. À l'aide du chiffrement au lieu d'une table de hachage est la principale raison de vos url sont tellement longue, et le principal problème. il suffit d'utiliser un hash/jeton table et qu'une partie du problème va plus loin et vous permet d'invalider un jeton à tout moment ainsi que de dissocier l'envoyé par mail l'url de l'utilisateur
Ne pas le faire (
<a href="long url">reset your password</a>
). Cette approche permettra d'augmenter votre score de spam, anti-spam, solutions vont penser que vos liens sont en train d'essayer de dissimuler la destination. Conclusion: Pour éviter d'être repérés comme étant du spam, une ancre href texte doit toujours être sur la même chaîne.OriginalL'auteur AD7six
Je pense que l'UUID de la forme
c909aa38-d041-11e1-979c-00247ee09c09
devrait être plus que suffisant, pour faire de brute-force ou la conjecture impossible.Un UUID besoins de 36 caractères s'affichent dans une forme lisible (16 Octets d'informations), qui ne devrait pas être un problème pour les clients de messagerie. Il peut être écrit de manière encore plus compact, si vous utilisez la casse des caractères. Il est important que le GUID ne sont pas générés à deviner (pas d'augmentation du nombre par exemple). Pour être sur le côté sécuritaire, vous pouvez lire
/dev/urandom
.Si vous avez beaucoup d'informations relatives à cette URL, vous pouvez enregistrer les informations sur le serveur dans une base de données, et d'utiliser le GUID comme la clé pour obtenir cette information.
Encore concerné? Si vous stockez les UUID avec une lenteur de hachage comme Bcrypt dans la base de données (comme un mot de passe), puis il devient plus facile de la force brute pour le mot de passe réel, que pour ce UUID.
OriginalL'auteur martinstoeckli