在Codeigniter中构建评论系统

时间:2012-06-06 21:09:09

标签: php codeigniter

我正在使用Codeigniter开发自定义CMS的评论系统。我认为这样做很简单,但我陷入了困境。

现在,我使用隐藏字段来保存帖子ID和家长评论ID。如果父评论ID是独立评论,则其为0,但如果评论ID是对特定评论的回复,则更改为评论ID(如此线索评论)。这是我能够提出表格的唯一方法,以了解评论所引用的帖子ID。

对于隐藏字段,我使用了以下验证:trim|required|numeric

我的配置中还将XSS过滤和CSRF(跨站点请求伪造)保护设置为TRUE。这足以保护表格不被滥用吗?还有什么我应该做的吗?

我应该做其他事情而不是隐藏的字段吗?

2 个答案:

答案 0 :(得分:0)

确保在删除或更新评论时(通过编辑),检查更新评论的user_id是否为实际评论所有者。我假设您在评论表中有一对一关系的user_id,即评论只能有一个所有者,即创建评论的人。

可能是这样的:

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;
    }
}

答案 1 :(得分:0)

这完全取决于你是多么偏执/你的安全要求是什么。

我可以预见的唯一问题是,如果有人手动更改父ID以在另一个帖子上注入评论。如果您具有不同的权限级别/仅允许某些人对某些部分发表评论,则可能会出现问题。您可以通过对ID进行某种可逆加密来绕过它,但我不会为大多数应用程序而烦恼。

numeric过滤器可以防止任何xss问题。 正如user1062354所述,请确保检查服务器上的编辑和删除权限。