Php 在Codeigniter中构建注释系统

Php 在Codeigniter中构建注释系统,php,codeigniter,Php,Codeigniter,我正在为使用Codeigniter构建的自定义CMS开发一个评论系统。我原以为这样做很简单,但我有几个地方卡住了 现在,我正在使用隐藏字段来保存帖子ID和父评论ID。如果是独立评论,父评论ID为0,但如果是对特定评论的回复,则会更改评论ID(因此线程评论)。这是我唯一能想到的让表单知道评论所引用的帖子ID的方法 对于隐藏字段,我使用了以下验证:trim | required | numeric 我的配置中还将XSS筛选和CSRF(跨站点请求伪造)保护设置为TRUE。这足以保护表单不被滥用吗?还有

我正在为使用Codeigniter构建的自定义CMS开发一个评论系统。我原以为这样做很简单,但我有几个地方卡住了

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

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

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


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

确保在删除或更新注释(通过编辑)时,检查更新注释的用户id是否是实际的注释所有者。我假设您的评论表中有一个1对1关系的用户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
所说,请确保检查服务器上的编辑和删除权限