有没有办法清除用户输入而不使用!important?

时间:2015-11-16 10:16:35

标签: css wordpress sass important

我正在使用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中完成吗?

1 个答案:

答案 0 :(得分:0)

这听起来有点危险。在将提交的html保存到数据库之前,您应该对其进行清理。

例如,有人可以插入以下帖子:

<a href="javascript:alert('asd')">click me</a>

这并不危险,但攻击者可以使用此方法向您的网页注入任何内容。

为了解决您的示例,“攻击者”还可以包含自己的<style></style>块,这些块引用您网页上的任何元素并以此方式进行更改。

在您的卫生处理期间,您可能希望删除所有标记或获取一个聪明的解析器,以删除您不想要的碎片。我个人不会允许公众用户将html插入我的网站。