Проблема безопасности сайтов, основанных на членах, в codeigniter - PullRequest
0 голосов
/ 19 октября 2011

Привет, друзья! Мне просто интересно, о какой безопасности следует помнить, когда пользователи моего сайта публикуют что-либо, используя форму. Я зашифровал сеанс codeigniter, а также включил функцию сохранения сеанса в базе данных, и мой пример функции Model такой, как показано ниже Я включил проверку формы и включил xss и csrf глобально.

Я думаю, что sql-инъекция автоматически обрабатывается функцией активной записи CI. Пожалуйста, предложите мне, что еще я должен проверить, прежде чем использовать этот сайт в производстве. Спасибо

        function AddSomeMemberPost(){

                $now = date('Y-m-d H:i:s', strtotime('now'));

        $data = array(
            'topic' => $this->input->post('title'),
            'status' => 'draft',
            'content' => $this->input->post('body'),
            'category_id' => $this->input->post('categoryid'),
            'featured' => '0',
            'lang' => $this->input->post('lang'),
                    'pubdate' => $now,
                    'video' => $this->input->post('tube_video'),
                    'user_id' => $this->session->userdata('user_id'),
                    'username' => $this->session->userdata('username')
        );

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

проверка выполняется таким образом. Нужно ли проверять данные сеанса? Это происходит через модель.

$this->form_validation->set_rules('topic', 'Topic', 'required|min_length[8]|max_length[90]');
            $this->form_validation->set_rules('content', 'Content', 'required|min_length[8]');
            $this->form_validation->set_rules('tags', 'Tag', 'required|miax_length[50]');
            $this->form_validation->set_rules('video', 'Youtube Video Link', 'min_length[8]');

1 Ответ

0 голосов
/ 19 октября 2011

Рекомендуется изменить уровень отчетов об ошибках PHP, который задается в основном файле /index.php.

error_reporting(0)

ПРИМЕЧАНИЕ. Вместо этого вы можете установить это в ловушку, чтобы оставить стандартные файлы CI без изменений.

Как правило, вы должны очищать ВСЕ данные перед тем, как помещать их в любой SQL (включая данные, используемые в сеансе), даже при использовании встроенных функций CI DB. Например, вы должны всегда приводить числа перед их добавлением в SQL

$val = (int)$val;

(ПРИМЕЧАНИЕ. Для повышения производительности вы можете проверить, находятся ли эти значения даже в допустимом диапазоне, прежде чем пытаться выполнить запрос; если вы спасаетесь от выполнения запросов, то вы ничего не получите. Например, если вы ищете значение это положительное целое число, тогда вам не нужно запускать запрос, если $ val <= 0) </p>

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