2014-11-09 2 views
1

Я прошел идентификатор с помощью метода AJAX POST на мой CodeIgniter контроллер:значение CodeIgniter проводки в безопасном способе

Я дал $config['global_xss_filtering'] = TRUE; в моем файле конфигурации.

$id = $this->input->post('id'); 
$this->model_a->did($id); 

Я хотел бы знать, если приведенный выше код является достаточно безопасным, или я должен добавить что-то вроде этого:

if ($this->input->post('id') && !empty($_POST['id'])) { 

$id = $this->input->post('id'); 

if (is_int($id)) { 
$this->model_a->did($id); 

    } 
} 

Или, может быть, я должен добавить что-то еще? Не могли бы вы помочь мне найти наиболее безопасный способ.

Update:

и нижеуказанные коды достаточно безопасными для значения, представленного с помощью HTML-форм?

$this->form_validation->set_rules('username', 'Username', 'required|trim'); 

if ($this->form_validation->run()) { 

    $username = $this->input->post('username'); 
} 

Должен ли я добавить if ($this->input->post('username') && !empty($_POST['username'])) или что-то еще?

+2

Ну код прекрасно до тех пор, как xss_filtering на для защиты от 'CSRF' атак. Я бы предпочел второй пример, который вы написали, это гарантирует, что значение будет отправлено, и что это значение на самом деле является целым числом, прежде чем пытаться сделать что-либо еще –

+0

спасибо за ответ. Не могли бы вы проверить обновленную часть моего вопроса? – EducateYourself

ответ

1

global_xss_filtering - это только побег (или преобразование) определенных «опасных» тегов html.

Как идентификатор всегда будет целое число, то это будет более безопасно использовать чеки/проверки вы упомянули

if($this->input->post('id') && !empty($_POST['id'])) 
{ 

$id = $this->input->post('id'); 
if(is_int($id)) 
    { 
    $this->model_a->did($id); 
    } 

} 

ИЛИ

if ($this->input->post('id') && !empty($_POST['id'])) 
{ 
    $id = (int)$this->input->post('id'); 
    $this->model_a->did($id); 

} 

Что касается обновленного части вопрос-

Поскольку вы используете проверку формы codeigniter, я думаю, что нет необходимости использовать дополнительные проверки/проверки. Вы можете использовать это что-то вроде как Приводим -

$this->form_validation->set_rules('username', 'Username', 'required|trim'); 




if ($this->input->server('REQUEST_METHOD') === 'POST') //To determine if a form has been submitted 
{ 
    if ($this->form_validation->run()) { 

    $username = $this->input->post('username'); 
    //other fields will go here 
} 


} 

ИЛИ

if ($_POST) //To determine if a form has been submitted 
{ 
    if ($this->form_validation->run()) { 

    $username = $this->input->post('username'); 
    //other fields will go here 
    } 
} 
+0

спасибо за ответ. Не могли бы вы проверить обновленную часть моего вопроса? – EducateYourself

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