Digamos que seu site tenha um GetUser
método da web:
http://www.example.com/User/GetUser/32
que retorna uma resposta JSON:
{ "Name": "John Doe" }
Se esse método aceitar apenas solicitações POST, o conteúdo só será retornado ao navegador se uma solicitação AJAX for feita http://www.example.com/User/GetUser/32
usando o método POST. Observe que, a menos que você tenha implementado o CORS , o navegador protegerá os dados de outros domínios que fazem essa solicitação ao seu.
No entanto, se você permitir solicitações GET, além de fazer uma solicitação AJAX semelhante à anterior com GET em vez de POST, um usuário mal-intencionado pode incluir seu JSON no contexto de seu próprio site usando uma script
tag no HTML. por exemplo em www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Este JavaScript deve ser inútil www.evil.com
porque não deve haver nenhuma maneira de ler o objeto retornado pelo seu método da web. Porém, devido a bugs em versões antigas de navegadores (por exemplo, Firefox 3), é possível redefinir objetos de protótipo JavaScript e possibilitar www.evil.com
a leitura dos dados retornados pelo método. Isso é conhecido como JSON Hijacking.
Veja esta postagem para alguns métodos de prevenir isso. No entanto, não é um problema conhecido com as versões posteriores dos navegadores modernos (Firefox, Chrome, IE).