【问题标题】:Sanitize CSS in PHP - Ruby Alternatives an option?在 PHP 中清理 CSS - Ruby Alternatives 一个选项?
【发布时间】:2012-11-05 23:37:48
【问题描述】:

我们要求允许用户自定义 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 库之前,我应该注意哪些陷阱?

【问题讨论】:

  • 为什么 HTMLPurifier 不适合您?我的意思是,它对您的情况有什么不利之处?
  • HTMLPurifier 本身不处理 CSS - 它依赖于 CSSTidy。 CSSTidy 已经超过 5 年没有更新了——它已经过时了,甚至不处理媒体查询。
  • @raina77ow 如果超过 5 年没有更新,它可能也不支持动画(猜测)。
  • 有什么理由不能将 css_sanitize 移植到 PHP 上?
  • Facebook 用于清理 CSS。您可能会查看他们较旧的开源项目,看看您是否可以使用他们的 CSS sanitizer。

标签: php css ruby-on-rails


【解决方案1】:

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

我不再像我早期的职业生涯那样处理 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

你可以使用它。

【讨论】:

  • 它太重了,无法为单个输入字段提供所有这些包袱。 HTMLPurifier 是个怪物。
  • 为什么不直接删除答案?这是一个糟糕的问题,题外话。您可以在这里进行 VTC。
  • 我不会删除答案以证明我们在编写软件时获得的知识也可能已经过时了。这个问题需要删除。盲目地提倡任何工具、库或方法都没有任何价值。我们需要更多地思考,并尝试就我们正在努力实现的目标提出正确的问题。我们今天相信的“正确方式”在不到十年的时间窗口内可能是错误的方式。
  • 这就是为什么对库或工具的请求是题外话,一开始就不应该得到答复。
猜你喜欢
  • 2011-03-15
  • 2023-03-15
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多