สมมติว่าเว็บไซต์ของคุณมีGetUser
วิธีการใช้เว็บ:
http://www.example.com/User/GetUser/32
ซึ่งส่งคืนการตอบสนอง JSON:
{ "Name": "John Doe" }
หากวิธีนี้ยอมรับเฉพาะคำขอ POST เนื้อหาจะถูกส่งกลับไปยังเบราว์เซอร์ก็ต่อเมื่อมีการร้องขอ AJAX http://www.example.com/User/GetUser/32
โดยใช้วิธีการ POST โปรดทราบว่าหากคุณไม่ได้ติดตั้งCORSเบราว์เซอร์จะปกป้องข้อมูลจากโดเมนอื่นที่ส่งคำขอนี้ถึงคุณ
อย่างไรก็ตามหากคุณอนุญาตคำขอ GET และสร้างคำขอ AJAX ที่คล้ายกับข้างต้นด้วย GET แทนที่จะเป็น POST ผู้ใช้ที่เป็นอันตรายอาจรวม JSON ของคุณไว้ในบริบทของไซต์ของตนโดยใช้script
แท็กใน HTML เช่นเมื่อwww.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
JavaScript นี้ไม่ควรใช้www.evil.com
เพราะไม่มีวิธีอ่านวัตถุที่ส่งคืนโดยวิธีการเว็บของคุณ อย่างไรก็ตามเนื่องจากข้อบกพร่องในเบราว์เซอร์เวอร์ชันเก่า (เช่น Firefox 3) จึงเป็นไปได้ที่วัตถุต้นแบบ JavaScript จะถูกกำหนดใหม่และทำให้สามารถwww.evil.com
อ่านข้อมูลของคุณที่ส่งคืนโดยวิธีการของคุณได้ สิ่งนี้เรียกว่า JSON Hijacking
ดูโพสต์นี้สำหรับวิธีการบางอย่างในการป้องกันปัญหานี้ อย่างไรก็ตามไม่ใช่ปัญหาที่ทราบกันดีกับเบราว์เซอร์สมัยใหม่รุ่นใหม่ ๆ (Firefox, Chrome, IE)