Правильный способ удаления записей с помощью Codeigniter - PullRequest
2 голосов
/ 18 января 2011

Я наткнулся на другой пост Stackoverflow, касающийся Get vs Post, и это заставило меня задуматься. С CI мой URL для удаления записи - http://domain.com/item/delete/100,, который удаляет идентификатор записи 100 из моей БД. Идентификатор записи извлекается через $this->uri->segment. В моей модели есть предложение where, которое проверяет, действительно ли пользователь является владельцем этой записи. Идентификатор пользователя хранится в сеансе внутри БД. Это достаточно хорошо?

Насколько я понимаю, POST следует использовать для однократной модификации данных, а GET - для извлечения уважения (например, просмотра элемента или постоянной ссылки).

1 Ответ

4 голосов
/ 18 января 2011

Вы действительно должны требовать почтовый запрос при удалении. В CodeIgniter это может быть так же просто, как проверка $ this-> input-> post ('Подтвердить')

Часть оправдания - вы не хотите, чтобы данные изменялись при получении запроса. Поскольку вы сказали, что требуете, чтобы этот человек был владельцем, по-прежнему существует проблема, заключающаяся в том, что кто-то помещает изображение с источником http://domain.com/item/delete/100. так что злоумышленник все равно сможет создать запрос на удаление, если вы не правильно фильтруете ввод.

Я должен признать, что я немного пурист и просто чувствую, что требовать должности - это правильный путь. Это то, как были написаны стандарты (хорошо, вы можете утверждать, что это должен быть запрос DELETE, но браузеры обычно не поддерживают их), а в других случаях вам действительно нужно их использовать (были случаи, когда веб-сканеры удаляли страницы).

Если вы хотите, чтобы ссылка для удаления была http://domain.com/item/delete/100, вы можете отобразить подтверждающее сообщение с формой, которая выполняет действие после публикации в качестве подтверждения удаления.

Надеюсь, это поможет, Билл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...