Отключите CRM_Security XSS-Cleaner в codeigniter для одного текстового поля - PullRequest
0 голосов
/ 12 марта 2019

У меня есть проект CodeIgniter.

Теперь я попытаюсь отправить формулу, содержащую теги html-скрипта в текстовой области.

    <textarea>
      <script src="linkto.js"></script>
      ... 
    </textarea>

Моя проблема в том, что функция в core / CRM_Security.php заменяет этот текст (тег скрипта) на «удаленный» текст.

Обычно это требуемый способ предотвращения XSS-инъекций и т. Д., Но в этом единственном случае мне нужно отправлять и получать теги сценария такими, какие они есть.

Есть ли способ пометить эту текстовую область, чтобы иметь своего рода исключение для этого?

Или каким-либо другим способом я могу предотвратить удаление этого с помощью функции xss_clean?

Здесь немного кода из функции xss_clean

public function xss_clean($str, $is_image = false)
 {
...
if (preg_match('/script|xss/i', $str)) {
                $str = preg_replace('#</*(?:script|xss).*?>#si', '[removed]', $str);
            }
...

}

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Может быть, не самый лучший, но простой способ решить эту проблему.

Перед отправкой данных я заменяю слово "script" на заполнитель.

После передачи xss-чище я заменяю заполнитель обратно на слово "script".

Так что я могу сохранить требуемое значение; -)

0 голосов
/ 12 марта 2019

Не отключать предотвращение XSS. Это там по причине. При обработке пользовательского ввода в текстовой области, попробуйте кодировать / декодировать объекты HTML.

PHP документы: http://php.net/manual/en/function.htmlentities.php

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