2011-05-06 93 views
2

我有一個RESTful API,可以返回JSONXMLXSS應該保護我API的迴應嗎?

例如說請求是針對諸如文檔之類的工件的所有評論:GET /document/DOCUMENT_ID/comments.json。回覆如下所示:

[ 
    { 
    "created_time": 1304598075, 
    "text": "<script type=\"text/javascript\">alert(document.cookie)</script>", 
    "user_id": 2293, 
    "id": 184124 
    }, 
    { 
    "created_time": 1304598043, 
    "text": "It's over ninethousaaaaaanddd!!!", 
    "user_id": 2293, 
    "id": 184122 
    } 
] 

在我自己的服務中,第一條評論將在提交之前被XSS轉義。但是,當通過API訪問時,我不得不信任API的實現者來進行轉義。

如果API是在通過瀏覽器呈現的Web服務中實現的,那麼攻擊矢量是相當真實的。另一方面,如果API是在桌面應用程序或移動應用程序中實現的--XSS轉義將是一種總體滋擾並且不需要。

我應該逃避通過API返回的所有字符串嗎?或者我應該實施一個設置,以便在註冊第三方應用程序時,API實現者可以指定他是否想要轉義回覆?

瞭解其他人如何處理此問題會很有趣。

回答

2

不,你不應該 - XSS處理應該由實際要顯示數據的任何東西來完成。許多第三方ASP.NET控件已經在它們顯示的文本上實現了XSS保護,因此您最終可能會遇到文本被雙重編碼的情況。

+0

好的,現在確實是一個很好的理由。爲那些想要它的實現者提供選項,是否仍然是一個好主意?作爲一種選擇性的東西? – 2011-05-06 08:22:33

+0

@John,我個人不會,它是webservice(或REST API)提供數據的工作,而不是將其格式化以供顯示。周圍有足夠多的反XSS庫,無論用戶界面採取什麼形式,都不應該成爲逃避文本輸出的問題。 – slugster 2011-05-06 08:40:20