Il phishing è principalmente un attacco social, ovvero puoi configurare un sito che sembra attendibile (cioè una copia di Paypal), dargli un nome host che potrebbe ingannare l'utente (ad es. https-paypal.encrypted.whatever) così che l'URL e i link abbiano un aspetto affidabile, mettili insieme a qualche articolo ("tentativo di hacking rilevato, necessita di verifica ..") in una mail e attendi gli utenti creduloni. Potresti usarlo per ottenere credenziali, infettare l'utente con malware ecc.
Lo spoofing del DNS è invece un attacco tecnico, in cui l'utente malintenzionato tenta di rispondere a una query DNS ("mi chiami l'indirizzo IP per paypal.com") con la sua risposta (errata) e quindi indirizza l'utente al sito degli attaccanti invece del sito richiesto.
Poiché lo spoofing del DNS è un attacco tecnico, è possibile proteggerlo con soluzioni tecniche come DNSSec. L'uso di https protegge anche dallo spoofing del DNS poiché l'autore dell'attacco non ha il certificato per il nome richiesto. Nessuna di queste cose aiuta contro il pishing, dal momento che questo attacco non è contro un sistema di fiducia basato sulla tecnica ma contro un sistema di fiducia sociale. Contro il phishing, solo la consapevolezza aiuta e, se sei fortunato, l'attacco di phishing non è stato preso di mira contro di te, ma contro molti utenti. In tal caso i browser spesso hanno già i siti pertinenti in una blacklist.