2011-05-08 76 views
6

UPDATE:從數據庫中刪除的內容,安全防範

我加入了CSRF保護像Berdir告訴我,用鏈接的幫助下,再次使我的申請工作。但是,我不太確定我現在做了什麼:D這會如何讓我的應用程序更安全?我特別感到困擾的是,我現在在我的ajax代碼中獲得了一個cookie值,因爲我必須通過我的ajax調用來傳遞它,否則它不起作用。這是否不提供關於cookie的一些重要信息?或者我只是偏執狂。謝謝!

http://aymsystems.com/ajax-csrf-protection-codeigniter-20

//老 嗨。

在此網絡應用我建,我有一個功能,添加「的技巧和竅門」某些主題。這些頁面只能由具有管理員角色的帳戶添加。不過,我也希望能夠刪除這些頁面。 (總是方便,正確)。由於我使用的是CodeIgniter,因此我只想製作一個帶有ID的控制器函數,並將此ID傳遞給與該ID相對應的頁面將從數據庫中刪除的模型。

只是爲了明確這一點:

控制器:

public function del_content($id) 
{ 
    $this->content_model->del_content($id) 
} 

型號:

public function del_content($id) 
{ 
    // database code which I can't be bothered to look up now 
    // something like $this->db->where(), $this->db->delete() 
} 

這一切很簡單,但我很害怕,這可能是簡單。這對我來說真的看起來並不那麼安全,對嗎?由於您可以從瀏覽器的URL地址欄中調用該函數,因此您可以通過該方法基本刪除整個內容表。 (因爲對於ID爲3的商品,您將會執行http://mywebsite/controller/del_content/3)。當然,只有管理員帳戶將有機會獲得該功能,但仍..

我以前從來沒有編程這樣的事,因此從來沒有想到我應該在這種情況下的安全措施。任何人都會友善地給我一些我應該留意的事情,也許有些想法,建議,關於如何使這更安全?

非常感謝!

回答

5

需要防範什麼是CSRF攻擊。簡而言之,它們是欺騙管理員通過GET或POST請求訪問特定URL的攻擊。

這樣做的典型方法是令牌。在生成指向刪除操作的鏈接或表單時,您將生成一個發送給客戶端的標記(作爲隱藏表單域或作爲GET URL的一部分),還將其存儲在服務器上以用於當前會話以及何時那個動作被執行,你比較提交和存儲的令牌,並且只有匹配時才繼續。

許多框架/系統有此內置在某些方面,例如與此類攻擊保護,在Drupal的形式API生成的所有形式。

+0

謝謝。我想我使用CI的CSRF配置來修復它,但是我仍然有一些問題。你介意檢查我的更新後的帖子嗎? – cabaret 2011-05-09 11:32:52

+1

我從來沒有使用CI,所以我無法回答CI特定的問題。我建議你不要編輯你的問題,而是建議你開一個新的問題並鏈接到這個問題上,因爲你已經接受了我對這個問題的回答,並且你不會得到任何新的答案,因爲那些可以回答的人將不會訪問它。 – Berdir 2011-05-09 16:30:28