我有一個主控制器來處理我的驗證系統的前端,它處理登錄,註銷,更新用戶信息等功能,我希望通過POST來調用視圖/表格。那麼像「delete_user」函數呢?我的想法是某人管理面板上的一個按鈕會顯示「刪除帳戶」,它會發送到「/ auth/delete」,並且該功能會根據用戶的會話用戶名或ID刪除用戶。這似乎有點開放,你可以發送一個鏈接給某人,當他們在該應用程序中打開它時,它會刪除他們的帳戶。最好的辦法是什麼?控制器安全問題中的代碼點火器驗證碼
0
A
回答
0
我處理這個問題的方式如下。在您的帳戶頁面上,您有一個刪除帳戶的鏈接。他們點擊該頁面並與另一頁面打招呼,詢問他們是否真的有把握,如果需要,請輸入他們的密碼以確認他們確定。
他們這樣做後,我停用他們的帳戶(不刪除),併發送一封電子郵件說他們的帳戶已被停用,如果這意圖沒有其他行動需要他們的一部分。如果沒有打算他們可以登錄到他們的帳戶,它會重新激活它。 (48小時內)48小時後,我刪除了他們的帳戶和信息。
1
你所關心的實際上叫做Cross Site Request Forgery或XSRF。你可以在OWASP Website上閱讀更多關於它的內容。
幾件事情,你應該做的解決這個問題 -
- 使用POST進行刪除操作。這並不能保護您免受XSRF的侵害,但可以保護您免受鏈接追隨者/頁面加速器的侵害。它也是http最佳實踐。
- 將您的會話標識符發佈在請求的正文中。在服務器端,比較來自cookie和來自請求的會話標識符 - 如果它們不同,則拒絕該請求。這是防止XSRF的「double submit cookie」方法。
- 或者,您可以要求用戶解決驗證碼。
此外,湯姆提到的「軟刪除」也是一個好主意。
1
這聽起來像添加一些其他信息的功能是答案。這裏是有問題的功能:
function delete() {
$id = $this->session->userdata('user_id');
$this->auth->delete_user($id);
redirect('home');
}
在代碼點火器這可以通過訪問site.com/class/delete這是我的問題訪問。我認爲一個好的計劃將發佈一個認證令牌與刪除按鈕(保存在cookie中),所以也無法通過URL採取行動:
function delete() {
if($this->input->post("token") == $this->session->userdata('token')) {
$id = $this->session->userdata('user_id');
$this->auth->delete_user($id);
}
redirect('home');
}
我不認爲我需要一個軟現在刪除,但謝謝你的提示!如果你看到任何其他問題請解釋,謝謝。
0
看一看較知名的認證庫之一笨:
https://github.com/benedmunds/CodeIgniter-Ion-Auth
如果你不決定只使用它,你至少可以得到關於如何去一些好的想法關於創建自己的
相關問題
- 1. 錯誤代碼點火器驗證
- 2. 代碼點火器的Twitter GET問題
- 3. 代碼點火控制器網頁
- 4. 代碼點火器路由問題
- 5. 代碼點火器子目錄問題
- 6. 問題路由代碼點火器
- 7. 無法訪問默認控制器代碼點火器
- 8. Clonefish驗證與代碼點火器驗證
- 9. 代碼點火器中的自定義控制器類名稱
- 10. 代碼點火器中的跳躍控制器
- 11. 代碼點火器服務器端驗證的AJAX形式
- 12. 代碼點火器
- 13. 驗證控制器問題
- 14. PHP代碼嗅探器驗證問題
- 15. 問題與JQuery getJSON檢索控制器數據(代碼點火器)
- 16. 從代碼點火器中從控制器下載excel文件
- 17. 代碼點火器:放入單獨的控制器或一個?
- 18. 代碼點火器控制器/型號名稱衝突
- 19. 重構控制器在代碼點火器
- 20. 代碼點火器從視圖到控制器獲取ajax值
- 21. 帶插入功能的代碼點火器安全
- 22. PrestaShop驗證器:SQL安全問題
- 23. PHP SDK +代碼點火器
- 24. 代碼點火器路由
- 25. 代碼點火器::包括?
- 26. 代碼點火器路由
- 27. 代碼點火器分頁
- 28. 在代碼點火器
- 29. 代碼點火器關係
- 30. 代碼點火器框架