artyomnar / output-purifier
清除文本中的不必要标签、外部来源和脚本
v1.0
2021-12-26 12:00 UTC
Requires
- php: >=8.0
README
清除文本中的不必要标签、外部来源和脚本
安装
安装此扩展的首选方式是通过 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>