2016-02-20 48 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的影响,所以这是一个非常有用的测试,您应该保留它,然后编写另一个在请求前获得适当令牌。

相关问题