Чи слід виводити HTML через esc_html () AND wp_kses ()?


11

Я розгублений щодо різних способів використання esc_html()та wp_kses(). Я розумію, що esc_html()перетворює спеціальні символи в їх сутність HTML, і це wp_kses()видаляє небажані теги (наприклад, <script>), але я не впевнений, у яких контекстах вони повинні використовуватися разом або окремо.

Якщо я запускаю якийсь недовірений HTML-код esc_html(), то будь-який JavaScript буде відображатися у простому тексті, а не відображатися браузером, тож у цей момент це безпечно, правильно? Єдиною причиною також запустити його wp_kses()було б уникнути відображення необробленого сценарію?

В основному, esc_html()робить це безпечним і wp_kses()робить його гарним. Це правильно?

Відповіді:


16

Загальне правило, принаймні так, як його дотримується Марк Джакіт , - це санітарія на вході, втеча на виході (слідство, щоб це правило було санітизовано рано, втеча пізно ).

Отже: використовуйте фільтри санітарії (наприклад, kses()сімейні), коли зберігаєте недовірені дані в базі даних , а також використовуйте пропускні фільтри (тобто esc_*()сімейство) під час виведення недовірених даних у шаблон .


14

Функції kses слід використовувати, коли ви хочете дозволити деякому підмножину html бути в результаті. Наприклад, коментарі дозволяють використовувати деякі HTML у них для жирних, курсивних, посилань тощо.

Функцію esc_html слід використовувати для повного виходу html. Жоден HTML не пройде через нього, не перетворившись на те, що браузер інтерпретуватиме як не HTML.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.