Załóżmy, że Twoja witryna ma GetUser
metodę internetową:
http://www.example.com/User/GetUser/32
która zwraca odpowiedź JSON:
{ "Name": "John Doe" }
Jeśli ta metoda akceptuje tylko żądania POST, zawartość zostanie zwrócona do przeglądarki tylko wtedy, gdy żądanie AJAX zostanie wysłane http://www.example.com/User/GetUser/32
przy użyciu metody POST. Pamiętaj, że jeśli nie zaimplementowałeś CORS , przeglądarka będzie chronić dane z innych domen wysyłających to żądanie do Ciebie.
Jeśli jednak zezwolisz na żądania GET, a także wykonanie żądania AJAX podobnego do powyższego za pomocą GET zamiast POST, złośliwy użytkownik może dołączyć twój script
kod JSON w kontekście własnej witryny, używając tagu w kodzie HTML. np. na www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Ten JavaScript powinien być bezużyteczny, www.evil.com
ponieważ nie powinno być możliwości odczytania obiektu zwróconego przez twoją metodę sieciową. Jednak ze względu na błędy występujące w starszych wersjach przeglądarek (np. Firefox 3) istnieje możliwość przedefiniowania obiektów prototypowych JavaScript i umożliwienia www.evil.com
odczytu danych zwróconych przez Twoją metodę. Jest to znane jako przechwytywanie JSON.
Zobacz ten post, aby zapoznać się z metodami zapobiegania temu. Nie jest to jednak znany problem z późniejszymi wersjami nowoczesnych przeglądarek (Firefox, Chrome, IE).