Supongamos que su sitio web tiene un GetUser
método web:
http://www.example.com/User/GetUser/32
que devuelve una respuesta JSON:
{ "Name": "John Doe" }
Si este método acepta solo solicitudes POST, entonces el contenido solo se devolverá al navegador si se realiza una solicitud AJAX http://www.example.com/User/GetUser/32
mediante el método POST. Tenga en cuenta que, a menos que haya implementado CORS , el navegador protegerá los datos de otros dominios que realicen esta solicitud al suyo.
Sin embargo, si permitió las solicitudes GET, además de realizar una solicitud AJAX similar a la anterior con GET en lugar de POST, un usuario malintencionado podría incluir su JSON en el contexto de su propio sitio mediante el uso de una script
etiqueta en el HTML. por ejemplo, en www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Este JavaScript debería ser inútil www.evil.com
porque no debería haber forma de leer el objeto devuelto por su método web. Sin embargo, debido a errores en las versiones antiguas de los navegadores (por ejemplo, Firefox 3), es posible redefinir los objetos prototipo de JavaScript y hacer posible la www.evil.com
lectura de los datos devueltos por su método. Esto se conoce como secuestro de JSON.
Consulte esta publicación para conocer algunos métodos para prevenir esto. Sin embargo, no es un problema conocido con las versiones posteriores de los navegadores modernos (Firefox, Chrome, IE).