﻿# 在 Web 2.0 時代必須重視 JavaScript/JSON Hijacking 攻擊

從 [ASP.NET MVC 2.0 Preview 2](https://web.archive.org/web/20100210183303/http://www.microsoft.com/downloads/details.aspx?FamilyID=d3f06bb9-5f5f-4f46-91e9-813b3fce2db1&displaylang=en) 開始 [JsonResult](http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult.aspx) 已經被修改成只能在 HTTP POST 的時候回應，像我們經常使用 [jQuery](http://jquery.com/) 的 [$.getJSON](http://docs.jquery.com/Ajax/jQuery.getJSON) 就不能再用了，我從 [ASP.NET MVC 2.0 Preview 2 Release Note](http://go.microsoft.com/fwlink/?LinkID=157066) 得知 [JSON Hijacking](http://haacked.com/archive/2009/06/25/json-hijacking.aspx) 之後就持續追蹤下去，覺得這是個非常值得注意的安全問題。

前陣子 [Twitter](https://x.com/) 就被發現了一個 JSON Hijacking 漏洞，可以讓使用者在進入惡意網站後被取得你所有在 [Twitter](https://x.com/) 的好友清單。建議有在使用 JSON 或動態下載 JavaScript 的網站都應該特別注意！

我看了好幾篇文章，不過都是英文的，解釋的非常清楚，相關資訊請參考「相關連結」。以下我列出幾個中文的文章供各位參考：

-   [石頭閒語:JavaScript Hijacking and How to](http://blog.roodo.com/rocksaying/archives/2955557.html)
-   [什麼是JavaScript Hijacking？](https://ithelp.ithome.com.tw/articles/10000004)
-   JavaScript Hijacking: Ad Hoc Ajax
-   [JavaScript Hijacking (from Fortify Software)](https://web.archive.org/web/20071121112413/http://franks543.blogspot.com:80/2007/07/javascript-hijacking-from-fortify.html)

要避免這個問題，最簡單的作法就是『**不要透過 HTTP GET 送出 JSON 資料**』，雖然 jQuery 沒有內建 [$.postJSON](http://docs.jquery.com/Ajax/jQuery.post) 方法，但卻非常容易實做，且在官網的 [jQuery.post](http://docs.jquery.com/Ajax/jQuery.post) 文件有提供一個簡單的範例如下：

```
$.postJSON = function(url, data, callback) {    $.post(url, data, callback, "json");};
```

**相關連結**

-   [JSON Hijacking](http://haacked.com/archive/2009/06/25/json-hijacking.aspx)
-   [Anatomy of a Subtle JSON Vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx)
-   [The real reason for (JavaScript|JSON) Hijacking](https://web.archive.org/web/20090909002152/http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2007/08/27/The-real-reason-for-_2800_JavaScript_7C00_JSON_2900_-Hijacking.aspx)
-   [JavaScript - Wikipedia, the free encyclopedia ( Cross-site vulnerabilities )](http://en.wikipedia.org/wiki/JavaScript#Cross-site_vulnerabilities)
-   [You Don’t Know What My Twitter Leaks](http://hackademix.net/2009/01/13/you-dont-know-what-my-twitter-leaks/) / [Twitter JSON Hijacking Updates](http://hackademix.net/2009/01/13/twitter-json-hijacking-updates/)
-   [I KNOW WHAT YOUR FRIENDS DID LAST SUMMER](http://www.thespanner.co.uk/2009/01/07/i-know-what-your-friends-did-last-summer/)
-   [Amazon.com: Ajax Security (Paperback)](http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939)
-   [JSON - 維基百科，自由的百科全書](http://zh.wikipedia.org/zh-tw/JSON)
