我们为其中一个客户提供了定制的CMS,并且正在使用strip_tags
来防止他们向其模板中添加不安全的标签(例如脚本标签)。我们采用初始的$_POST
值并将其另存为var,然后在var上运行strip_tags
并比较两者。如果有任何更改,将引发错误。
他们最近报告说,即使不使用白名单之外的任何标签,他们也会收到错误消息。我遍历了他们要保存的内容,没有看到任何会引发错误的内容。
是否可以扩展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");
}