Codeigniter(CI) 使用 CSRF 功能造成 POST 403

2016-02-17 CentOS

今天在工作上遇到在某一個開發站台 URL 在使用瀏覽器 和使用 JS 去 call URL 的 response 有不同的狀況

 

雖然是一樣開啟 URL,但 resquest 的方式不同造成的回應也有所不同,這就是之前在測試滲透技巧中的一環

 

狀況說明:

  1. 使用 POST 會出現 403 沒有權限 (JS)
  2. 使用 GET 可以出現正常的 response 200 (browser)

 

根據 HTTP 的規範,GET 一般用於資訊查詢,而 POST 一般用於更新修改資訊,也就是 HTTP 中為何要區別 GET、POST、PUT、DELETE 的操作

 

在此例狀況,由於在開發環境上,所以在系統面沒有針對 POST 進行限制,那遭遇 403 的狀況肯定另有其設定

 

細查後發現開發環境所使用的是 Codeigniter(CI) 的開發環境,在 CI 本身有一項 csrf protection 的安全功能主要是用來防禦 XSS 等類似的滲透攻擊,所以在執行 POST 的時候會產生安全性阻擋,防止你的網站被串改植入

 

若要解決這個狀況

1. 依照 csrf 的規範,使用 POST 時必須加入 token

2. 關閉 csrf,從此 POST 權限全開

 

詳細 csrf protection 設定可以參考官網 Security Class

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱