我正在使用wp_editor在我的WordPress网站上创建一个用户可以发布的前端表单,而无需转到管理部分。它有效,但因为它们可以剪切并粘贴到其中,所以它们可能会复制内联样式,这将与网站的整体设计相冲突。
为了解决这个问题,我已将div
中的所有帖子包含在类clean
中,这样就删除了任何潜在的内联样式:SCSS代码如下:
.clean {
/*Stops inline styles overwriting when people cut and paste */
* {
font-color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
}
b, strong {
font-weight: bold !important;
}
p {
margin:0;
padding: .5em 0 !important;
-webkit-margin-before:0;
-webkit-margin-after:0;
}
}
但是,我知道在你的CSS中使用!important
通常被认为是不好的做法,所以我正在寻找解决方法。这可以在css中完成吗?
答案 0 :(得分:0)
这听起来有点危险。在将提交的html保存到数据库之前,您应该对其进行清理。
例如,有人可以插入以下帖子:
<a href="javascript:alert('asd')">click me</a>
这并不危险,但攻击者可以使用此方法向您的网页注入任何内容。
为了解决您的示例,“攻击者”还可以包含自己的<style></style>
块,这些块引用您网页上的任何元素并以此方式进行更改。
在您的卫生处理期间,您可能希望删除所有标记或获取一个聪明的解析器,以删除您不想要的碎片。我个人不会允许公众用户将html插入我的网站。