Использование функции Escape Codeigniter - PullRequest
3 голосов
/ 29 июля 2010

Я недавно добавил раздел комментариев в блог.Codeigniter говорит, что всегда следует избегать данных перед тем, как поместить их в базу данных (у меня есть xss clean на полный рабочий день).Некоторые люди говорят, что все активные операции записи сбежали.Я трачу свое время, используя escape на функции ниже?

Используя нижеприведенную функцию, я экранирую данные, но все это выходит в область просмотра.Как вы «отрываетесь» от данных, чтобы они были доступны для чтения без «»?Я не хочу использовать регулярное выражение для удаления каждого '' в случае, если оно используется в предложении

Я думаю, мой реальный вопрос в том, всегда ли активные записи экранированы или нет?

т.е.: Автор выходит 'Имя'

 function comment_insert()
{
$data = array
(
    'entry_id' => $this->db->escape($this->input->post('entry_id')),
    'ip' => $this->db->escape($this->input->post('ip')),
    'date' => $this->input->post('date'),
    'comment' => $this->db->escape($this->input->post('comment')),
    'author' => $this->db->escape($this->input->post('author')),
    'email' => $this->db->escape($this->input->post('email'))
);

$this->form_validation->set_rules('ip', 'IP', 'required|trim|valid_ip');//check
$this->form_validation->set_rules('entry_id', 'Entry ID', 'required|trim|numeric');
$this->form_validation->set_rules('date', 'Date', 'required|trim');
$this->form_validation->set_rules('comment', 'Comment',   'required|trim|max_length[600]');
$this->form_validation->set_rules('author', 'Name',  'required|trim|alpha_dash');
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');

if ($this->form_validation->run() == TRUE) 
{
    $this->db->limit(1);
    $this->db->insert('comments', $data);
    redirect('main/blog_view/'.$_POST['entry_id']);
} else 
{
   redirect('main/blog_view/'.$_POST['entry_id']);
}   
}

Спасибо

1 Ответ

7 голосов
/ 29 июля 2010

Согласно руководству пользователя CodeIgniter для функций Active Record в классе базы данных: http://codeigniter.com/user_guide/database/active_record.html

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

Так что да, вы теряете время.Пока вы используете Active Record, ваши данные автоматически экранируются.

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