У нас есть специально созданная CMS для одного из наших клиентов, и мы используем strip_tags
, чтобы предотвратить добавление небезопасных тегов в свои шаблоны (т. Е. Теги сценария). Мы берем начальное значение $_POST
и сохраняем его как var, затем запустите strip_tags
для var и сравните их. Если есть какие-либо изменения, выдается ошибка.
Недавно они сообщили, что получают ошибку, даже если не используют никаких тегов вне нашего белого списка. Я просмотрел содержимое, которое они пытаются сохранить, и не увидел ничего, что могло бы вызвать ошибку.
Есть ли способ расширить strip_tags
, чтобы вернуть список тегов, которые он удаляет?
По сути, это то, что мы делаем:
$init_input = $_POST['template_data'];
$_POST['template_data'] = strip_tags($_POST['template_data'],
"<p><a><div><sub><sup><ul><li><h1><h2><h3><h4><h5><h6><abbr><strong>
<address><br><hr><table><tr><b><td><tbody><thead><ol><span><i><em>
<data-accordion><data-accordion-group><data-accordion-heading>
<select><accordion><accordion-group><accordion-heading><img>
<style><head><body><html><meta><option><!doctype>");
//Send an email if there are tags being stripped
if($init_input !== $_POST['template_data']){
Logger::ErrorLog("Unapproved Markup Submitted Within CMS: $init_input");
}