Спочатку прочитайте про це в API Drupal:
Так check_plain()
кодує спеціальні символи , які мають особливе значення в HTML (наприклад, <
і &
) в прості текстових об'єкти (тобто , <
і , &
відповідно) , які зроблять це буде буквально перекладаються (Не брати до уваги як HTML) , коли цей рядок, яка потім відображаються як частина сторінки з HTML-розмітка Функція filter_xss()
фільтрує HTML-рядок для запобігання вразливості між веб-сайтами (XSS). Це чотири речі:
- Видалення символів та конструкцій, які можуть обманути браузери
- Переконайтеся, що всі об’єкти HTML добре сформовані
- Переконайтесь, що всі теги та атрибути HTML добре сформовані
- Переконайтеся, що жодні теги HTML не містять URL-адрес із забороненим протоколом (наприклад, JavaScript :)
Обидві функції використовуються для очищення даних від користувачів, щоб переконатися, що будь-яка ін'єкція користувача нейтралізується до того, як дані будуть відображені на вашому сайті.
Ви ніколи не пропускаєте одну і ту ж рядок через обидва .
Якщо ви використовуєте, check_plain()
тоді рядок, переданий функції, повинен використовуватися як звичайний текст (а не HTML). Тоді filter_xss()
вона не потрібна, оскільки check_plain()
завжди буде робити рядок звичайним текстом.
Якщо ви користуєтесь filter_xss()
, то строк, переданий функції, повинен бути HTML, і check_plain()
зіпсує його.
Коли я дивлюся на шаблон, який ви використовуєте як приклад, мені здається, що всі три поля, які передаються, print()
походять із вмісту, який уже дезінфікований, і більше не потребують санітарії.
Однак якщо ви створюєте власний модуль, який збирає введення користувача, не передаючи його через "безпечний" текстовий фільтр, наприклад "Фільтрований HTML" або "Звичайний", ви повинні використовувати ці функції для санітарії.
filter_xss()
коли ви хочете відфільтрувати XSS з потенційно небезпечного контенту (тобто вмісту від ненадійного користувача), аcheck_plain()
коли ви хочете уникнути спеціальних символів HTML із рядка