在 Codeigniter 中构建评论系统


Building a comment system in Codeigniter

我正在为我正在使用Codeigniter构建的自定义CMS开发评论系统。我以为这很简单,但我被困在几个地方。

现在,我正在使用隐藏字段来保存帖子 ID 和家长评论 ID。如果是独立评论,则父评论 ID 为 0,但如果是对特定评论的回复(因此是线程评论),则更改为评论 ID。这是我能想到的表格知道评论所指的帖子 ID 的唯一方法。

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

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

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

确保在删除或更新注释(通过编辑)时,检查更新注释user_id是否是实际的评论所有者。 我假设您的评论表中有 1 对 1 关系的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;
    }
}

这完全取决于您的偏执程度/您的安全要求是什么。

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

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