Codeigniter безопасно удалить записи БД - PullRequest
1 голос
/ 05 июня 2011

Какой самый безопасный способ удаления строк в таблице базы данных с использованием Codeigniter?

Я использую следующий метод.

HTML: извлекает ссылки, отправленные пользователем (заголовок ссылки, URL,и описание).Добавляет Remove ссылку на каждую запись.Ссылка имеет третий сегмент, который является идентификатором записи из базы данных, link_id.

<ul id="user_links">
    <?php foreach($query as $row): ?>

    <li><?php echo $row->link_title; ?></li>
    <li><?php echo auto_link($row->link_url, 'url', TRUE); ?></li>
    <li><?php echo $row->link_description; ?></li>
    <?php echo anchor('profile/remove_link/'.$row->link_id, 'Remove', 'title="Remove link"'); ?>

    <?php endforeach; ?>
</ul>

КОНТРОЛЛЕР:

    function remove_link()
    {
               $link_id = $this->uri->segment(3);
               $seg = 'user_links'; //used in model for redirecting back to page
               $this->load->model('Link_model');
               $this->Profile_model->link_delete($link_id, $seg);
    }

МОДЕЛЬ:

function link_delete($link_id, $seg)
{
    $this->db->where('user_id', $this->tank_auth->get_user_id());
    $this->db->where('link_id', $link_id);
    $this->db->delete('user_links'); 
    redirect("/profile/$seg/");         
}

Это работает, но я обеспокоен тем, что удаление записей через сегмент URI небезопасно.Мой код безопасен?В противном случае, что вы рекомендуете?

1 Ответ

2 голосов
/ 05 июня 2011

Вы можете использовать либо помощник по формам, либо POST-запрос с защитой CSRF вместо метода url: http://codeigniter.com/user_guide/libraries/security.html или ваш метод со ссылками, но добавьте некоторый код в: 1 дезинфицировать сегмент uri, 2 добавить токен, описанный в ссылке кабаре

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