Is it because Yahoo crawls private emails (seems really improbable)?
È altamente improbabile. Ad esempio, Yahoo sicuramente non indicherà un link per la reimpostazione della password che ti verrà inviato nella tua casella di posta privata Yahoo.
Is it because these emails where somehow leaked on the web and Yahoo crawled them?
Questa è una spiegazione plausibile. A volte è difficile ragionare su come esattamente un motore di ricerca abbia scoperto il contenuto, ma deve essere visualizzato da qualche parte sull'Internet pubblica o essere reso accessibile al motore di ricerca. Un'altra possibilità che viene in mente è che il framework del sito indicizza automaticamente tutto il contenuto in una sitemap (ad esempio a yoursite.example/sitemap.xml
) - è qualcosa che Wordpress spesso fa. Inoltre, sei sicuro che il contenuto non sia visibile tramite l'elenco delle directory o un dump del database accessibile pubblicamente?
Also I was thinking, is it possible that clients copied/pasted the URL directly in Yahoo search, and then Yahoo searched for that and kept it?
Non so se Yahoo indicizzi automaticamente gli URL che cerchi - questo sicuramente sembra rischioso dal punto di vista della sicurezza. Ma trovo improbabile che molti dei tuoi clienti inseriscano i loro URL nella barra di ricerca di Yahoo.
Se disponi di registri delle richieste disponibili, puoi controllare quali documenti il crawler di Yahoo ha effettuato l'accesso nel passato (cerca un agente utente contenente " Yahoo! Slurp
").
Contromisure
Per impedire ai motori di ricerca di indicizzare contenuti sensibili, puoi aggiungere una voce Disallow
al tuo file robots.txt
con un carattere jolly *
, in questo modo:
Disallow: /app/secretcontent.ext?token=*
Ricorda però che non tutti i motori di ricerca rispettano le direttive Disallow
e robots.txt
è uno dei primi posti che gli aggressori considerano per la raccolta di informazioni.
Più in generale, potresti voler lasciare scadere rapidamente i link a contenuti sensibili (o persino trasformarli in link one-shot a cui è possibile accedere solo una volta, se necessario).
Un altro approccio potrebbe inviare agli utenti il link a yoursite.example/secretcontent
e il token separatamente. Il sito dovrebbe quindi presentare un modulo in cui l'utente deve inserire il token. Questo modulo invierà il token tramite POST
in modo che il token non sia mai visibile nell'URL e quindi non possa essere indicizzato.