Supponiamo che il tuo sito web abbia un GetUser
metodo web:
http://www.example.com/User/GetUser/32
che restituisce una risposta JSON:
{ "Name": "John Doe" }
Se questo metodo accetta solo richieste POST, il contenuto verrà restituito al browser solo se viene effettuata una richiesta AJAX http://www.example.com/User/GetUser/32
utilizzando il metodo POST. Nota che a meno che tu non abbia implementato CORS , il browser proteggerà i dati da altri domini che fanno questa richiesta al tuo.
Tuttavia, se hai consentito le richieste GET, oltre a effettuare una richiesta AJAX simile a quella sopra con GET invece di POST, un utente malintenzionato potrebbe includere il tuo JSON nel contesto del proprio sito utilizzando un script
tag nell'HTML. ad esempio su www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Questo JavaScript dovrebbe essere inutile www.evil.com
perché non dovrebbe esserci modo di leggere l'oggetto restituito dal tuo metodo web. Tuttavia, a causa di bug nelle vecchie versioni dei browser (es. Firefox 3), è possibile ridefinire gli oggetti prototipo JavaScript e rendere possibile la www.evil.com
lettura dei dati restituiti dal metodo. Questo è noto come dirottamento JSON.
Vedi questo post per alcuni metodi per prevenirlo. Tuttavia, non è un problema noto con le versioni successive dei browser moderni (Firefox, Chrome, IE).