2012-06-06 48 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表示,请确保您检查服务器上的编辑和删除权限。