artyomnar/output-purifier

清除文本中的不必要标签、外部来源和脚本

v1.0 2021-12-26 12:00 UTC

This package is auto-updated.

Last update: 2024-09-26 17:51:26 UTC


README

清除文本中的不必要标签、外部来源和脚本

Latest Stable Version Total Downloads

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

composer require artyomnar/output-purifier

或者添加以下内容到你的 composer.json 的 require 部分:

"artyomnar/output-purifier": "*"

使用

将过滤后的文本保存到数据库

$rawText = '<p><h1 class="header">Hello, world!</h1></p><img src="https://mysite.com/img/logo.svg"><a href="https://wrong-site.com/js/xss-atack.js">Go!</a>';
$purifier = Purifier::getInstance(['img', 'a', 'p'], ['https://mysite.com'], '#');
$db->save($purifier->filter($rawText));

//Result:<p>Hello, world!</p><img src="https://mysite.com/img/logo.svg"><a href="#/js/xss-atack.js">Go!</a>

在视图中显示过滤后的文本

$rawText = '<p id="w1"><h1 class="header">Hello, world!</h1></p><img src="https://mysite.com/img/logo.svg"><img src="https://wrong-site.com/js/xss-atack.js">Go to the link https://xxx.com <div style="background-image: url("https://hacker.com/xss/script.js")"></div>';
$purifier = Purifier::getInstance(['img', 'a', 'p', 'div'], ['https://mysite.com', 'https://static.mysite.com'], 'https://valid-site.com');
echo $purifier->filter($rawText);

//Result:<p id="123">hello, world!</p><img src="https://mysite.com/img/logo.svg"><img src="https://valid-site.com/js/xss-atack.js">Go to the link https://valid-site.com <div style="background-image: url("https://valid-site.com/xss/script.js")"></div>