1

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

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

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

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

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

4

2 回答 2

0

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

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

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

于 2012-06-06T21:43:16.580 回答
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;
    }
}
于 2012-06-06T21:42:21.160 回答