Расширение CodeIgniter Security.php для включения ведения журнала - PullRequest
0 голосов
/ 06 июля 2011

TLDR; Я хочу включить ведение журнала базы данных xss_clean () при замене вредоносных данных.


Я хочу включить ведение журнала базы данных функции xss_clean () в Security.php, в основном я хочу узнать, было ли идентифицировано, что вход, которым я кормлю xss_clean (), успешно содержит вредоносные данные, которые был отфильтрован или нет.

Так в основном:

$str = '<script>alert();</script>';
$str = xss_clean($str);

Что бы идеально произошло для меня:

  1. Очистить строку от XSS
  2. Вернуть чистый $ str
  3. Ввести информацию о злых данных (и, в конечном итоге, вошедшего в систему пользователя) в базу данных

Насколько я вижу в файле Security.php, нет ничего, что позаботится об этом для меня, или что-то, что МОЖЕТ сделать это с помощью хуков и т. Д. Я, конечно, могу ошибаться.

Поскольку нет регистрации того, сколько замен было сделано в Security.php - я вынужден расширять Security.php, копировать, вставляя текущий код в исходную функцию и изменяя его для поддержки этого? Или есть решение, которое будет более чистым и безопасным для будущих обновлений CodeIgniter (и особенно файлов, подделанных / расширенных)?

1 Ответ

1 голос
/ 06 июля 2011

Вам потребуется расширить класс Security, но абсолютно не нужно копировать и вставлять какой-либо код, если все, что вам нужно, - это журнал ввода / вывода.Что-то вроде следующего позволит вам сделать это:

Class My_Security extends CI_Security {

    public function xss_clean($str, $is_image = FALSE) {
        // Do whatever you need here with the input ... ($str, $is_image)

        $str = parent::xss_clean($str, $is_image);

        // Do whatever you need here with the output ... ($str)

        return $str;
    }

}

Таким образом, вы просто оборачиваете существующую функцию и возитесь с вводом / выводом.Вы могли бы быть более совместимыми с помощью функции PHP get_args , чтобы прозрачно передавать объект аргументов, если вас беспокоили изменения базового метода.

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