正在从帖子的所有元素中剥离内联样式的HTML属性

时间:2018-08-27 作者:Mattisdada

我试图在Wordpress中发布由外部方生成的HTML,但我得到的结果与style 属性,如果我以编程方式更新style 属性被删除,但如果我通过编辑器发布相同的HTML,它将保持不变。调试到目前为止,它看起来像kses 过滤器是执行实际剥离的对象

原始HTML:

<div class="container-fluid " style="background-image:url(\'https://localhost/app/uploads/2018/08/315.png\');"></div>
以编程方式提交时,它将变为:

<div class="container-fluid "></div>
提交的代码(修改为更清晰的示例)

$body = <<<EOT
<div class="container-fluid " style="background-image:url(\'https://localhost/app/uploads/2018/08/315.png\');"></div>
EOT;

$new_post = [
    \'ID\'                => 70,
    \'post_title\'        => \'Example\',
    \'post_content\'      => $body,
    \'post_type\'         => \'post\',
    \'post_status\'       => \'draft\'
];
$success = wp_update_post($new_post, true);
目的是避免在正常环境中剥离

环境:

除了此代码所在的默认主题之外,没有其他插件

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这是因为你要做的是一个安全特性,帖子内容是通过wp_kses_post 去掉危险标签

但是,管理员拥有unfiltered_html 功能,允许他们在内容和标题中放置任意危险的HTML。这就是为什么您可以通过编辑器插入标记。

但这仍然不能解决根本问题,即在帖子内容中包含样式标记,这是一种不好的做法,可能会导致其他问题。

相反,请使用短代码在内容中嵌入任意HTML,例如,实现流体容器短代码:

[fluidcontainer background="url"][/fluidcontainer]
或者使用不需要style 标签

另一方面,有人可能会建议,有一种极其危险的解决方案,那就是去掉安全功能。这将是极其危险的,并使您面临大量攻击。正如我已经证明的那样,这是不必要的。对任何可能提出建议的人都要非常小心。这样做是鲁莽和不负责任的,在某种程度上是不道德的。在合规性、审计或数据泄露调查期间,它也可以作为技术疏忽的理由

结束

相关推荐

编辑粘性标题html-如何找到相应的php文件

我需要让我的粘性头工作得更顺畅一点。现在,当你向下滚动时,粘性标题会立即加载,这会使网站跳转。它很颠簸,会导致糟糕的用户体验。我希望粘滞标题正好出现在正常标题不可见的点上。这样,用户的体验是流畅的。我已经了解了如何通过在browser dev tool中编辑以下html代码来实现这一点:<div id=\"header-wrap\" class=\" clearfix\" data-default-height=\"50\" data-sticky-height=\"50\"> 更改