@barkleapp/css-sanitizer

中文文档
1.0.0发布于 2024/08/11MITCommonJS零依赖近 30 天下载 2.6万

用于防止XSS攻击的 CSS 消毒器

中文使用文档
文档目录14 节
  1. 安装
  2. 使用量
  3. 基本用途
  4. 自定义配置
  5. API 密码
  6. CssSanitizer
  7. 配置选项
  8. maxCssLength (违约:65536)
  9. allowedProperties (默认:参见代码)
  10. allowedAtRules (默认: ['@media','@keyframes','@font-face','@i…
  11. allowedPseudoClasses (默认:[':hover','活性',':聚焦',':访问',':一胎','…
  12. validateUrl (职务)
  13. sanitizeUrl (职务)
  14. 许可证

CSS 卫生剂

一种轻量级可配置的CSS消毒器,通过过滤出可能有害的CSS属性和值来防止XSS攻击.

安装

npm install @barkleapp/css-sanitizer

使用量

基本用途

import { CssSanitizer } from 'css-sanitizer';

const sanitizer = new CssSanitizer();

const unsanitizedCss = `
  body {
    background: url('https://example.com/image.jpg');
    color: red;
  }
`;

const sanitizedCss = sanitizer.sanitizeCss(unsanitizedCss);
console.log(sanitizedCss);

自定义配置

您可以通过一个配置对象来自定义消毒器的行为 :

const customSanitizer = new CssSanitizer({
  maxCssLength: 100000,
  allowedProperties: ['custom-property'],
  allowedAtRules: ['@custom-media'],
  allowedPseudoClasses: [':has'],
  validateUrl: (url) => {
    // Custom URL validation logic
    return url.startsWith('https://');
  },
  sanitizeUrl: (url) => {
    // Custom URL sanitization logic
    const allowedDomains = ['example.com', 'trusteddomain.com'];
    const parsedUrl = new URL(url);
    if (allowedDomains.includes(parsedUrl.hostname)) {
      return url;
    }
    return '';
  }
});

API 密码

CssSanitizer

进行CSS消毒的主要类.

构造器

new CssSanitizer(config)
  • config (可选) : 具有下列属性的对象:
    • maxCssLength (数字): CSS字符串的最大允许长度.
    • allowedProperties (Array):允许附加CSS属性.
    • allowedAtRules 允许附加规则.
    • allowedPseudoClasses (Array):允许附加的伪类.
    • validateUrl (功能):自定义功能来验证 URL.
    • sanitizeUrl (功能):自定义功能来消毒URL.

方法

sanitizeCss(css: string): string

通过去除潜在的有害属性和值来对输入 CSS 字符串进行分级.

  • css: CSS字符串来消毒.
  • 返回:已消毒的 CSS 字符串.

配置选项

maxCssLength (违约:65536)

CSS 字符串的最大允许长度 。 如果输入的 CSS 超过此长度,则会被截取.

allowedProperties (默认:参见代码)

一组允许的 CSS 属性 。 您可以通过提供构造器中的一系列附加属性来添加到此列表中 .

allowedAtRules (默认: ['@media','@keyframes','@font-face','@import'])

一套允许的规则。 您可以通过在构建器中提供一系列附加规则来添加到此列表中 .

allowedPseudoClasses (默认:[':hover','活性',':聚焦',':访问',':一胎',':最后一胎','nth-child','nth-th-fort','nth-fort','not',': before',':after'])

一套允许的伪类. 您可以通过在构造器中提供一组额外的伪类来添加到此列表中.

validateUrl (职务)

使用 URL 字符串并返回布尔表示 URL 是否有效的函数 。 默认情况下,它会检查字符串是否可以被解析为有效的URL.

sanitizeUrl (职务)

如果不允许使用 URL, 则使用 URL 字符串并返回已静态 URL 字符串或空字符串的函数 。 默认情况下,它允许从'fonts.googleapis.com'获取URL.

许可证

麻省理工学院

版本与发布记录

@barkleapp/css-sanitizer 共发布 1 个版本,首次发布于 2024/08/11;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.0latest2024/08/112 年前

关于 @barkleapp/css-sanitizer 的常见问题

@barkleapp/css-sanitizer 是什么?

用于防止XSS攻击的 CSS 消毒器

如何安装 @barkleapp/css-sanitizer?

在项目目录运行 npm install @barkleapp/css-sanitizer,或使用 pnpm add / yarn add / bun add。

@barkleapp/css-sanitizer 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/barkleapp__css-sanitizer 是否存在。

@barkleapp/css-sanitizer 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@barkleapp/css-sanitizer 可以商用吗?

@barkleapp/css-sanitizer 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@barkleapp/css-sanitizer 的下载量有多少?

根据 npm 官方下载统计,@barkleapp/css-sanitizer 在 2026/10/08 – 2026/11/06 这 30 天内被下载 25,861 次,日均约 862 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@barkleapp/css-sanitizer 还在维护吗?

最新版本 1.0.0 发布于 2024/08/11(2 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/08/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。