2016-08-25 2 views
1

Итак, я заметил, что библиотека «form_validation» воспламенителя кода позволяет использовать обратные вызовы, которые являются большими, но их одно условие, метод должен быть объявлен открытым.безопасны ли проверки правильности кода?

Каждый, кто использовал codeignitier, будет знать, что публичный метод в контроллере будет оценен из внешнего мира, я даже попытался выяснить, есть ли у codeignitier какой-то код, чтобы остановить вызов методов обратного вызова, и это не так.

Насколько это опасно для безопасности, потому что я не чувствую себя настолько безопасным, чтобы быть таким открытым.

Спасибо, Dan

+0

Использовать вызываемый. Проблема решена, и да, я согласен с вами - никаких публичных методов в контроллерах, - и, кроме того, я предпочитаю Thin Controllers, поэтому я поместил весь этот код проверки жирной формы в модель. http://www.codeigniter.com/user_guide/libraries/form_validation.html#callable-use-anything-as-a-rule – cartalot

ответ

0

Лично я не думаю, что это небезопасно. То, что я всегда буду делать, - это просто добавить форму дополнительного значения, например маркер CSRF, который вы можете проверить, а также другое уникальное значение, созданное при входе в основную функцию проверки, которую вы можете проверить в функции обратного вызова.

0

Вы можете всегда составлять библиотеку MY_Form_validation.php и устанавливать специальные методы проверки с использованием паранойи.

<?php if (! defined('BASEPATH')) exit('Not your cup of tea.'); 

class MY_Form_validation extends CI_Form_validation 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function noone_can_see($str) 
    { 
     if ((string)$str !== (string)strrev($str)) 
     { 
      return FALSE; 
     } 
     else 
     { 
      return TRUE; 
     } 
    } 
} 

В контроллере:

$this->form_validation->set_rules('username', 'Username', 'trim|required|noone_can_see', ['noone_can_see' => 'We still can not read the %s identically from both ways.']); 

Загрузка библиотеки не изменилась. Все еще может быть в autoload.php с 'form_validation' значением библиотеки.

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