我在插件页面上有一个文本区域,用于小的css增强,我将它们直接输出到头部。我的问题是如何清理CSS
我为选项注册了验证函数register_setting
. 立即在设置页上$output[\'css\'] = (string) $input[\'css\'];
这就是我正在做的一切。我是否应该逃避它?word与它有什么关系?对于数据库,它本身是否有一些转义?我可以在这里进行一些邪恶的注射。
对于输出,我使用esc_attr()
到目前为止,它工作得很好,但我只是想问一下,是否有更好的东西。我刚测试过"
它们显然被翻译成的字符"
我刚刚测试过,他们似乎没有破坏firefox中的CSS,但这感觉很糟糕。那么我应该用什么来代替呢?
echo \'<style type="text/css" media="screen">\' . esc_attr( $css ) . \'</style>\';
顺便说一句,我不在乎
"
你只需要在CSS中使用它们,或者我错了,你可以使用url(“bla”)或url(bla),两者都可以。还是有支持的理由
"
CSS中的s?
更新1:在回答了两个问题后,如果我经常说话和思考,我仍然想知道我的思维过程是否错得太多,现在在数据库输入上使用wp\\u filter\\u nohtml\\u kses()跳过它两次and on output. 我很乐意从具有安全专业知识的人那里得到答案。
更新2:我注意到wp\\u filter\\u nohtml\\u kses()不允许>
或<
因为它们是CSS选择器,也许它毕竟不是正确的过滤器。可能是其他我想要在CSS中过滤的东西?
SO网友:s1lv3r
我看到的大多数插件实际上都不关心这一点。他们只是相信能够编辑选项页面的人是可以信任的。
您可以使用一个现有的php类进行css优化,因为它们在解析css时也会清理css。
CSS中需要使用单引号或双引号(“/”)来表示值中包含空格的情况。当然,图像路径通常不会出现这种情况,但带有空格的字体名称非常常见。然后,您需要使用引号来这样写:
font-family:"Times New Roman",Georgia,serif;
我刚刚看到stackexchange上有一个类似的问题,它有一个很好的例子,可以使用HTMLPurifier+CSSTidy的工作代码。你可以看看
here.