Joitakin ehdotuksia:
Älä nollaa käyttäjän salasanaa, ennen kuin se on vahvistettu. Älä nollaa käyttäjän salasanaa välittömästi. Nollaa se vasta, kun käyttäjä napsauttaa vahvistuslinkkiä, joka lähetetään ennalta rekisteröidylle sähköpostiosoitteelleen.
Vaadi CAPTCHA. Kun käyttäjä pyytää uuden salasanan, pakota hänet ratkaista CAPTCHA ennen jatkamista. Tämän tarkoituksena on estää automatisoituja työkaluja yrittämästä monille käyttäjille surua ja pakottaa käyttäjä todistamaan olevansa ihminen (ei robotti).
Satunnaisuus. Aikarajainen salasanan palauttamisen URL-osoitteen tulee sisältää satunnainen, arvaamaton komponentti. Varmista, että käytät salauksen laadun satunnaisuutta. Tulos / dev / urandom
tai System.Security.Cryptography.RNGCryptoServiceProvider
olisi hyvä valinta. rand ()
- tai random ()
- tai System.Random
-lähde ei ole tarpeeksi satunnainen ja olisi huono valinta. GUID tai aikaleima ei ole tarpeeksi satunnainen, eikä se olisi hyvä valinta.
Sisällytä aikaraja. Nollausvahvistuslinkin pitäisi vanhentua kohtuullisen ajan kuluttua: esimerkiksi 24 tuntia . Linkin pitäisi olla käyttökelpoinen vain kerran, ja sen on oltava voimassa välittömästi sen käytön jälkeen.
Sisällytä selittävä teksti sähköpostiin. Haluat ehkä lisätä selittävää tekstiä sähköpostitse, miksi sähköposti lähetettiin, mikäli joku pyytää nollaamista tilille, joka ei ole sinun. Voit lisätä tekstiä, kuten "Joku on pyytänyt uuden salasanan vaihtamista tilisi käyttäjänimi
kohtaan site
. Jos teit tämän pyynnön, vaihda salasanasi napsauttamalla tätä. Jos et tehnyt tätä pyyntöä, peruuta pyyntö napsauttamalla tätä. "
Lähetä sähköpostia salasanan palauttamisen jälkeen. Kun salasana on palautettu onnistuneesti, lähetä sähköposti käyttäjälle osoitteeseen kerro heille, että salasana on vaihdettu. Älä sisällytä uutta salasanaa kyseiseen sähköpostiin.
Tarkkaile peruutuksia. Voit harkita jonkin verran logiikkaa seurataksesi, kuinka usein käyttäjät napsauttavat peruutuslinkkiä osoittaen, että he eivät pyytäneet nollausta. Jos tämä ylittää tietyn kynnysarvon, voi olla hyödyllistä lähettää hälytys verkko-operaattoreille. Lisäksi jos jonkin pyynnön peruutuslinkissä käydään sen jälkeen, kun vahvistuslinkissä on vierailu, se on potentiaalinen osoitus hyökkäyksestä kyseistä käyttäjää vastaan - saatat haluta ryhtyä toimiin siinä vaiheessa, esimerkiksi mitätöidä käyttäjän salasanan ja vaatia heitä vaihtamaan salasanansa uudelleen. (Tämä on suojaus seuraavaa hyökkäystä vastaan: hyökkääjä saa pääsyn käyttäjän postilaatikkoon, pyytää sitten salasanan vaihtamista sivustollasi ja vierailee vahvistuslinkkiä. Jos hyökkääjä ei poista näitä sähköposteja käyttäjän postilaatikosta, sitten, kun todellinen käyttäjä lukee sähköpostinsa, hän voi napsauttaa peruutuslinkkiä, mikä antaa sinulle mahdolliset ongelmat.)
Käytä HTTPS: ää. Linkin tulisi käyttää https: ää (ei http :), suojautumaan erilaisilta hyökkäyksiltä (esim. Firesheep-hyökkäykset käyttäjille, jotka surffaavat verkossa Internet-kahvilasta).
Kirjaa nämä toiminnot. Ehdotan, että kaikki tällaiset pyynnöt kirjataan. Käyttäjätunnuksen kirjaamisen lisäksi sinun on ehkä kirjattava sen asiakkaan IP-osoite, joka on pyytänyt nollauslinkkiä sähköpostitse käyttäjälle, sekä nollauslinkissä vierailleen asiakkaan IP-osoite.
Lisälukemista. Voit myös lukea Troy Huntin erinomaisen blogikirjoituksen, Kaikki mitä olet koskaan halunnut tietää suojatun salasanan palautusominaisuuden rakentamisesta. Kiitos @coryT linkistä tähän resurssiin.
Lopuksi ota huomioon muu kuin salasanan todennus. Salasanoilla on monia ongelmia todennusmekanismina, ja saatat harkita muita tapoja todentaa käyttäjiä, kuten suojatun pysyvän evästeen tallentaminen koneelle, jota ei voi arvata. salaisuus niiden todentamiseksi. Tällä tavoin ei ole salasanaa, jota unohtaa, eikä käyttäjän tietojenkalastelua, vaikka sinun on tarjottava tapa, jolla käyttäjä voi valtuuttaa pääsyn uudelta koneelta tai uudelta selaimelta (mahdollisesti sähköpostitse käyttäjän esiasetukseen). rekisteröity sähköpostiosoite). Tässä kyselyasiakirjassa on erinomainen tutkimus monista varautumismenetelmistä sekä niiden vahvuuksista ja heikkouksista.