2012-06-06 50 views
1

我正在使用Codeigniter構建自定義CMS的評論系統。我認爲這樣做很簡單,但我陷入了一些問題。在Codeigniter中構建評論系統

現在,我正在使用隱藏字段來保存帖子ID和父註釋ID。如果它是獨立評論,則父註釋ID爲0,但如果它是對特定評論的回覆(因此爲線索評論),則更改爲評論ID。這是我能夠通過表單來了解評論所參考的帖子ID的唯一途徑。

對於隱藏字段我用下面的驗證:trim|required|numeric

我也有XSS過濾和CSRF(跨站請求僞造)保護設置爲TRUE在我的配置。這足以保護表單不被濫用嗎?還有什麼我應該做的?

我應該做別的事情而不是隱藏的領域?

回答

0

確保在刪除或更新評論(通過編輯)時,檢查更新評論的user_id是否爲實際評論所有者。我假設你的評論表中有user_id,表示1對1關係,即評論只能有一個所有者,即創建評論的人。

也許是這樣的:

function is_comment_owner($comment_id, $user_id) { 
    $this->db->where('comment_id', $comment_id); 
    $this->db->where('user_id', $user_id); 
    $this->db->from('comments_table'); 
    if ($this->db->count_all_results() > 0) { 
     return TRUE; 
    } else { 
     return FALSE; 
    } 
} 
0

這一切都取決於你是如何偏執/您的安全要求是什麼。

我可以預見的唯一問題是,如果有人手動更改父ID以在其他帖子上發表評論。如果您擁有不同的權限級別,則可能會出現問題/只有某些人可以對某些部分進行評論。你可以通過在ID上進行某種可逆加密來避開它,但我不會爲大多數應用程序而煩惱。

單獨使用numeric過濾器應該可以防止任何xss問題。 由於user1062354表示,請確保您檢查服務器上的編輯和刪除權限。