безопасен ли этот активный запрос на запись кода? - PullRequest
0 голосов
/ 06 мая 2011

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

function addCategory(){
    $data = array(
    'name'=> $_POST['name'],
    'shortdesc'=>$_POST['shortdesc'],
    'longdesc' => $_POST['longdesc'],
    'status'=>$_POST['status'],
    'parentid' => $_POST['parentid']

    );
    $this->db->insert('categories', $data);
}

Ответы [ 2 ]

5 голосов
/ 06 мая 2011

Code Igniter будет правильно экранировать эти значения для вас.Тем не менее, вы должны использовать входной класс, чтобы получить ваши почтовые данные;Мало того, что он автоматически защищает от XSS, если вы установили его таким образом в своем конфигурационном файле, если любое из этих значений не установлено, вы не получите предупреждения, выбрасывающие:вызов функции непосредственно в вашем массиве:

$data = array(
    'name' => $this->input->post('name'),
    ... etc ...
);

Или, если вы хотите установить значения по умолчанию, когда значение POST отсутствует:

// php 5.3+
$data = array(
    'name' => $this->input->post('name') ?: 'default'
);

// older
$data = array(
    'name' => $this->input->post('name') ? $this->input->post('name') : 'default'
);
2 голосов
/ 06 мая 2011

Я бы порекомендовал заняться этим

$data = array();
foreach($_POST as $key => value)
{
    if ( $this->input->post($key) )   // if a value is set
    {
        $data[$key] = $this->input->post($key, true);  //protect against xss
    }
}

$this->db->insert('catagories', $data);

Таким образом, если какое-либо из указанных вами статических значений не задано, они не добавляются к вставке данных, как false (что возвращает $this->input->post(), если они не заданы)

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