medilies/xssless

清除您的富文本中的XSS威胁。

资助包维护!
medilies

v0.4.0 2024-08-13 20:54 UTC

This package is auto-updated.

Last update: 2024-09-26 12:42:24 UTC


README

Latest Version on Packagist pest phpstan

workflow

为什么使用Xssless

  • 您的应用程序具有一个 富文本编辑器,并且您想防止所有XSS。
  • 您需要完整的HTML5 & CSS3支持。
  • 您希望在无需深入研究白名单配置的情况下,允许所有安全的HTML元素、它们的属性和CSS属性。

默认驱动程序与 OWASP 建议一致

... OWASP 推荐使用 DOMPurify 进行HTML净化。

需求

  • PHP >= 8.2
  • ext-json
  • Node >= 18
  • NPM

安装

使用composer安装此包

composer require medilies/xssless

对于非Laravel项目,选择一个配置并运行以下代码

$config = new Medilies\Xssless\Dompurify\DompurifyCliConfig('node', 'npm');

(new Medilies\Xssless\Xssless)
    ->using($config)
    ->setup();

对于Laravel项目,运行以下命令

php artisan xssless:setup

用法

使用 Medilies\Xssless\Dompurify\DompurifyCliConfig

(new Medilies\Xssless\Xssless)
    ->using(new Medilies\Xssless\Dompurify\DompurifyCliConfig)
    ->clean($html);

使用 Medilies\Xssless\Dompurify\DompurifyServiceConfig

$config = new Medilies\Xssless\Dompurify\DompurifyServiceConfig(
    host: '127.0.0.1', 
    port: 63000
);

$xssless = (new Medilies\Xssless\Xssless)
    ->using($config);

/**
 * It is better to have this part in a separate script
 * that runs continuously and independently from your app 
 */
$xssless->start();

$xssless->clean($html);

Laravel用法

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="xssless-config"

这是发布配置文件的内容

return [
    'default' => 'dompurify-cli',

    'drivers' => [
        'dompurify-cli' => new DompurifyCliConfig(
            node: env('NODE_PATH', 'node'), // @phpstan-ignore argument.type
            npm: env('NPM_PATH', 'npm'), // @phpstan-ignore argument.type
            binary: null,
            tempFolder: null,
        ),
        
        'dompurify-service' => new DompurifyServiceConfig(
            node: env('NODE_PATH', 'node'), // @phpstan-ignore argument.type
            npm: env('NPM_PATH', 'npm'), // @phpstan-ignore argument.type
            host: '127.0.0.1',
            port: 63000,
            binary: null,
        ),
    ],
];

运行以下命令(并非所有驱动程序都需要)

php artisan xssless:start

使用外观

Medilies\Xssless\Laravel\Facades\Xssless::clean($html);

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件