我们有一个要求,允许用户自定义一个PHP应用程序的CSS。通常,只有用户能够查看自定义CSS,但在某些情况下,他们组中其他用户也可以查看CSS,因此需要确保其已被清理。
我知道HTMLPurifier和CSSTidy可以用于PHP,但是CSSTidy已经非常过时了,显然不能处理我们需要的一切。
我还没有找到任何其他的PHP库可以做到这一点。
我正在探索的另一种方法是使用ruby库(http://apidock.com/rails/HTML/WhiteListSanitizer/sanitize_css或https://github.com/courtenay/css_file_sanitize/blob/master/lib/css_sanitize.rb)并将其转换为php。
在我走上这条路之前,有没有其他方法可以替代上面的方法?在使用Ruby库之前,有没有什么我应该注意的陷阱?
发布于 2012-11-14 09:54:55
更新:近八年后,我想留下第二个便条,因为我的答案开始被否决。
我与JS/CSS打交道的时间不像我职业生涯早期那么多。最近几年,我确实主要专注于构建后端服务和工具。因此,我在这个主题上的知识可能已经过时了,即使我试图保持它的敏锐性,这需要纪律和努力工作。
然而,除了HtmlPrufier和/或TidyCSS之外,今天可能存在更好的工具。我并不是说这些工具不好。但是社区的支持和积极的维护很重要。通常情况下,我会远离应用程序中死掉的或未维护的依赖项。
如果PHP必须在这里进行清理,我会首先研究Wikimedia's CSS sanitizer,如果它对我有效的话。或多或少,它正在做这项工作。在文件系统中持久化给定CSS的精简版本,在应用程序端根据修改进行更新也是我的次要目标。一个预先生成的版本可以让我在发送到浏览器时生活更轻松。任何工具都可以在那里工作,PHP可能只会为它触发一个专门的事件。创建CSS的净化版本也可能是后台进程候选,而不是按需生成。也许是通过PHP以外的其他平台上的可用工具。所以现在有更多的选择和可能性。
希望我的解释能为试图实现类似目标的人们提供一些启发。
最初的答案是:
HTMLPurifier和CSSTidy是正确的工具。CSSTidy仍然由Cedric Morin和其他几个开发人员维护on Github。此外,自2012年4月以来,CSSTidy的默认CSS级别为CSS3.0。
你可以用这个。
https://stackoverflow.com/questions/13242192
复制相似问题