jakubboucek / legacy-escape
正确转义插入到HTML、CSS、JS和URL中的数据。Latte/Latte包的底层。
v1.9.3
2024-03-13 15:01 UTC
Requires
- php: ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
Requires (Dev)
- nette/tester: ^2.4
- nette/utils: ^3.1 || ^4.0
- phpstan/phpstan: 1.9.2
Suggests
- nette/utils: Allows to safe escape HTML with markup: https://doc.nette.org/en/utils/html-elements
README
用于在旧项目中正确转义输出的PHP库。
不要为新项目使用此包,改用 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 <script>hack</script>
无转义输出
在某些情况下,您可能有意输出变量而不进行任何转义,但其他人或您的未来自己可能会错误地认为您忘记转义它。这里您可以使用 noescape()
方法将代码标记为有意未转义。
echo \JakubBoucek\Escape\Escape::noescape($htmlContent);
常见问题解答
是否支持转义SQL查询?
不,SQL需要访问活动SQL连接才能正确转义。此包仅允许转义上下文而不需要外部要求。
贡献
请不要犹豫发送问题或拉取请求。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 pan@jakubboucek.cz 而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。
原始代码许可证
版权所有 (c) 2004, 2014 David Grudl (https://davidgrudl.com)。保留所有权利。有关更多信息,请参阅 许可证文件。