jakubboucek/legacy-escape

正确转义插入到HTML、CSS、JS和URL中的数据。Latte/Latte包的底层。

v1.9.3 2024-03-13 15:01 UTC

This package is auto-updated.

Last update: 2024-09-13 16:04:10 UTC


README

用于在旧项目中正确转义输出的PHP库。

不要为新项目使用此包,改用 Latte

该包是 Latte包 过滤器 的底层。

功能

  • 转义HTML
  • 转义HTML属性
  • 转义HTML href属性
  • 转义HTML注释
  • 转义XML
  • 转义JS
  • 转义URL
  • 转义CSS
  • 转义少数CSS属性的特定格式
    • color

安装

composer require jakubboucek/legacy-escape

用法

代替

echo 'Registered user: ' . $username;

使用

use JakubBoucek\Escape\Escape;

echo 'Registered user: ' . Escape::html($username);

您也可以通过别名使用快捷方式

use JakubBoucek\Escape\Escape as E;

echo 'Registered user: ' . E::html($username);

CSS特定格式

在少数情况下,您不能使用 Escape::css($cssColor) 来转义某些已知格式,因为标准转义会破坏CSS格式。类 EscapeCss 准备了有限数量的已知属性及其特定格式。

color 属性

将CSS color 属性的值转换为安全格式,例如

use JakubBoucek\Escape\EscapeCss;

echo '<style>color: ' . EscapeCss::color($cssColor) . ';</style>';

这可以防止通过转义颜色值上下文进行攻击。

安全的HTML内容

该包支持使用包含的 安全HTML内容 来转义HTML。

用法

use JakubBoucek\Escape\Escape;
use Nette\Utils\Html; 

$avatarUrl = 'http:/example.com/avatar.png';
$username = 'John Doe <script>hack</script>';

$avatarImage = Html::el('img')->src($avatarUrl)->width(16);
echo Escape::html($avatarImage, ' ', $username);

// <img src="http:/example.com/avatar.png" width="16"> John Doe &lt;script&gt;hack&lt;/script&gt;

无转义输出

在某些情况下,您可能有意输出变量而不进行任何转义,但其他人或您的未来自己可能会错误地认为您忘记转义它。这里您可以使用 noescape() 方法将代码标记为有意未转义。

echo \JakubBoucek\Escape\Escape::noescape($htmlContent);

常见问题解答

是否支持转义SQL查询?

不,SQL需要访问活动SQL连接才能正确转义。此包仅允许转义上下文而不需要外部要求。

贡献

请不要犹豫发送问题或拉取请求。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 pan@jakubboucek.cz 而不是使用问题跟踪器。

许可证

MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。

原始代码许可证

版权所有 (c) 2004, 2014 David Grudl (https://davidgrudl.com)。保留所有权利。有关更多信息,请参阅 许可证文件