1

Codeigniter を使用して構築しているカスタム CMS のコメント システムに取り組んでいます。とても簡単にできると思ったのですが、いくつかの点で立ち往生しています。

現在、隠しフィールドを使用して投稿 ID と親コメント ID を保持しています。スタンドアロンのコメントの場合、親コメント ID は 0 ですが、特定のコメントへの返信の場合 (つまり、スレッド化されたコメント)、コメント ID に変更されます。これは、コメントが参照している投稿 ID をフォームが知る唯一の方法でした。

隠しフィールドについては、次の検証を使用しました。trim|required|numeric

また、設定で XSS フィルタリングと CSRF (クロス サイト リクエスト フォージェリ) 保護を TRUE に設定しています。これは、フォームの誤用を防ぐのに十分ですか? 他にすべきことはありますか?

隠しフィールドの代わりに何か他のことをする必要がありますか?

4

2 に答える 2

0

コメントの削除または更新 (編集による) を行うときは、コメントを更新している user_id が実際のコメントの所有者であるかどうかを確認してください。コメント テーブルに 1 対 1 の関係の user_id があると想定しています。つまり、コメントには、コメントを作成した 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;
    }
}
于 2012-06-06T21:42:21.160 に答える
0

それはすべて、あなたがどれほど偏執的であるか/セキュリティ要件が何であるかに依存します.

私が予測できる唯一の問題は、誰かが手動で親 ID を変更して、別の投稿にコメントを挿入した場合です。これは、異なるアクセス許可レベルを持っている場合、または特定の人だけが特定のセクションにコメントできる場合に問題になる可能性があります。ID に対してなんらかの可逆暗号化を行うことで回避できますが、ほとんどのアプリケーションでは気にしません。

numericフィルターだけで xss の問題を防ぐことができます。前述user1062354のように、サーバーでの編集と削除の権限を確認してください。

于 2012-06-06T21:43:16.580 に答える