2012-06-06 4 views
1

Я работаю над системой комментариев для пользовательской CMS, которую я создаю с помощью Codeigniter. Я думал, что это будет довольно просто сделать, но я застрял в нескольких местах.Создание системы комментариев в Codeigniter

Прямо сейчас, я использую скрытые поля для хранения идентификатора сообщения и идентификатора родительского комментария. Идентификатор родительского комментария равен 0, если он является автономным комментарием, но изменяется на идентификатор комментария, если это ответ на конкретный комментарий (так что потоковые комментарии). Это был единственный способ, с помощью которого я мог придумать форму, чтобы узнать, что такое идентификатор сообщения, на который ссылался данный комментарий.

Для скрытых полей я использовал следующие проверки: trim|required|numeric

Я также XSS Фильтрация и CSRF (Cross Site Request подлог) Защита установлен в TRUE, в моей конфигурации. Этого достаточно, чтобы защитить форму от неправильного использования? Есть ли что-нибудь еще, что я должен делать?

Должен ли я делать что-то другое вместо скрытых полей?

ответ

0

Убедитесь, что при удалении или обновлении комментариев (посредством редактирования) проверьте, является ли User_id обновлением комментария фактическим владельцем комментария. Я предполагаю, что у вас есть user_id в вашей таблице комментариев для отношений от 1 до 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; 
    } 
} 
0

Все зависит от того, как параноик вы/что ваши требования безопасности.

Единственная проблема, которую я могу предвидеть, - это если кто-то вручную изменит родительский идентификатор, чтобы вставить комментарий к другому сообщению. Это может быть проблемой, если у вас разные уровни разрешений/только определенным людям разрешено прокомментировать некоторые разделы. Вы можете обойти это, сделав какое-то обратимое шифрование на идентификаторах, но я бы не стал беспокоиться о большинстве приложений.

Фильтр numeric должен предотвратить любые проблемы с xss. Как указано user1062354, убедитесь, что вы проверяете разрешения на редактирование и удаление на сервере.

Смежные вопросы