Расширьте strip_tags, чтобы вернуть список удаляемых тегов - PullRequest
0 голосов
/ 03 июля 2018

У нас есть специально созданная 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");
}
...