2

We have a requirement to allow users to customise the CSS for a PHP app. In general, only that user will be able to view the custom CSS, but there are cases when other users in their group could also view the CSS, hence the need to ensure that its sanitized.

I am aware that HTMLPurifier and CSSTidy can be used for PHP, but CSSTidy is extremely outdated, and apparently can't handle everything that we need to throw at it.

I havent found any other PHP libs that can do this.

One alternative that I am exploring is taking a ruby library (http://apidock.com/rails/HTML/WhiteListSanitizer/sanitize_css or https://github.com/courtenay/css_file_sanitize/blob/master/lib/css_sanitize.rb) and converting it into php.

Before I go down that route, are there any alternatives to the above? And are there any pitfalls that I should be aware of before using one of the Ruby libs?

4

1 回答 1

0

更新: 将近八年后,我想留下第二条笔记,因为我的回答开始受到反对。

我不再像我早期的职业生涯那样处理 JS/CSS。近年来,我确实主要专注于构建后端服务和工具。因此,即使我努力保持敏锐,我在这方面的知识也可能已经过时,这需要纪律和努力。

尽管如此,今天可能存在比 HtmlPrufier 和/或 TidyCSS 更好的工具。我并不是说这些工具不好。但社区支持和积极维护很重要。作为一个经验法则,我在我的应用程序中远离死的或未维护的依赖项。

如果 PHP 必须在这里进行清理,我会先查看 Wikimedia 的 CSS 清理程序,如果它对我有用。或多或少,它正在完成这项工作。在文件系统中保留给定 CSS 的缩小版本,在应用程序端修改为更新也是我的次要目标。发送到浏览器时,预生成的版本可以让我的生活更轻松。任何工具都可以在那里工作,PHP 可能会为其触发一个专用事件。创建经过清理的 CSS 版本也可能是后台进程候选,而不是按需生成。也许通过 PHP 以外的其他平台的可用工具。所以现在有更多的选择和可能性。

希望我的解释能为试图实现类似目标的人们提供一些启示。

原来的答案是:

HTMLPurifier 和 CSSTidy 是正确的工具。CSSTidy 仍然由Cedric Morin和Github 上的少数其他开发人员维护。自 2012 年 4 月以来,CSSTidy 的默认 CSS 级别也是CSS3.0

你可以用那个。

于 2012-11-14T01:54:55.363 回答