雖然是一樣開啟 URL,但 resquest 的方式不同造成的回應也有所不同,這就是之前在測試滲透技巧中的一環
狀況說明:
- 使用 POST 會出現 403 沒有權限 (JS)
- 使用 GET 可以出現正常的 response (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
Orignal From: Codeigniter(CI) 使用 CSRF 功能造成 POST 403
沒有留言:
張貼留言