2016-02-20 88 views
1

測試代碼: PRN響應時無效防僞錯誤

(testing "adding a record" 
    (let [response (app (mock/request :post "/api/df" 
             "{\"id\":123}"))] 
     (prn response) 
     (is (= (:status response) 200)))) 

測試錯誤:

{:status 403, :headers {"Content-Type" "text/html; charset=utf-8", "X-XSS-Protection" "1; mode=block", "X-Frame-Options" "SAMEORIGIN", "X-Content-Type-Options" "nosniff"}, :body "<h1>Invalid anti-forgery token</h1>"} 
+1

而你的問題是......? –

+0

你如何編寫測試來測試它? –

回答

2

跨站請求僞造,是一種攻擊,其中一個evildooer在他們的網站上放置一個鏈接,以欺騙該網站上某人的瀏覽器向您的網站發出請求。

如果有人碰巧登錄到你的網站的時候,那麼這個請求會導致發生的事情,就好像他們已經要求它(因爲他們的瀏覽器要求它的出現)。這可能是一個非常嚴重的問題,它會影響GET和POST請求。

一般的解決方法是讓所以沒有嚴重的行爲可以給網站的第一個連接上發生的,而是先連接設置令牌頭,該服務器希望看到下一個請求。這允許服務器驗證請求鏈,從而防止CSRF(或XSRF)。

,如果你希望你的測試,以要求該服務聽起來,你需要你的請求,首先獲取適當的CSRF令牌,然後使之想的測試要求。

就目前來看,您的測試是測試這個調用不容易受到CSRF的影響,所以這是一個非常有用的測試,您應該保留它,然後編寫另一個在請求前獲得適當令牌。