2011-07-29 43 views
2

我想知道將XSS保護放在我們網站的最佳位置。由於我們使用不同的平臺,我們的團隊被分成前端和後端團隊,並將REST用作我們兩個團隊之間的API。我們有一個可以保存應該受保護的HTML子集的字段,我想知道應該在什麼層次上完成這個任務。REST Web服務和放置XSS保護的位置

不應該被web服務允許進入數據庫,還是應該在出路時由消費者驗證,確保安全?對於不能包含HTML的字段,我們只是保存爲原始輸入,並在呈現之前讓前端將其轉義。

我的觀點是,如果有人試圖使用不允許的標籤,web服務應該響應數據無效(我們一直在使用422來表示無效更新)。我只是想知道別人的想法。

回答

1

它可能不是一個/或。 Web服務可能可以從多個UI進行調用,並且Uis會隨着時間而改變,它不應該認爲它的所有調用者都是小心/可信的。確實有人可以通過手工查詢直接調用你的服務?

但是,爲了便於使用,我們經常選擇在UI中進行友好的驗證和錯誤報告。我剛剛完成填寫網上表格,在任何字段包含非字母數字的服務層的barf網站。如果UI已經驗證了輸入點而不是在3頁輸入後拒絕我的請求,那麼它應該是,所以更好。

(更何況,如果網站會要求您提供僱主的名稱,該名稱實際上包含你似乎有點阻礙撇號!)

0

你應該同時使用。典型的模式是試圖清理可怕的數據(如果對給定值需要進行消毒處理,您應該真的拒絕該請求),並在出路時進行編碼。

前者的原因是編碼有時會錯過。後者的原因是你的數據庫不能作爲數據源被信任(人們可以訪問它而不會觸及你的客戶端,或者你的客戶端可能錯過了某些東西)。