Angenommen, Ihre Website verfügt über eine GetUser
Webmethode:
http://www.example.com/User/GetUser/32
Dies gibt eine JSON-Antwort zurück:
{ "Name": "John Doe" }
Wenn diese Methode nur POST-Anforderungen akzeptiert, wird der Inhalt nur an den Browser zurückgegeben, wenn eine AJAX-Anforderung zur http://www.example.com/User/GetUser/32
Verwendung der POST-Methode gestellt wird. Beachten Sie , dass der Browser die Daten vor anderen Domänen schützt, die diese Anforderung an Ihre senden , sofern Sie CORS nicht implementiert haben .
Wenn Sie jedoch GET-Anforderungen zugelassen und eine AJAX-Anforderung ähnlich der oben genannten mit GET anstelle von POST gestellt haben, kann ein böswilliger Benutzer Ihren JSON mithilfe eines script
Tags im HTML- Code in den Kontext seiner eigenen Site aufnehmen . zB am www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Dieses JavaScript sollte unbrauchbar sein, www.evil.com
da es keine Möglichkeit geben sollte, das von Ihrer Webmethode zurückgegebene Objekt zu lesen. Aufgrund von Fehlern in alten Browserversionen (z. B. Firefox 3) ist es jedoch möglich, JavaScript-Prototypobjekte neu zu definieren und www.evil.com
Ihre von Ihrer Methode zurückgegebenen Daten zu lesen. Dies ist als JSON-Hijacking bekannt.
In diesem Beitrag finden Sie einige Methoden, um dies zu verhindern. Es ist jedoch kein bekanntes Problem mit den späteren Versionen moderner Browser (Firefox, Chrome, IE).