Я недавно добавил раздел комментариев в блог.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']);
}
}
Спасибо