jakubboucek/safe-request

安全HTTP请求:Nette Request对象的扩展,但已从已知的安全问题中净化

v0.9.1 2024-03-13 15:04 UTC

This package is auto-updated.

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


README

安全HTTP请求:Nette Request对象的扩展(Nette Request对象),但已从已知的安全问题中净化。

净化的问题

  1. 使用Nette RequestFactory可能会泄露用户的Basic认证凭据,因为它默认创建带有该凭据的Url对象并用于创建回链URL(问题nette/http#215)。它在PR#211中得到修复,但尚未发布(并且可能永远不会为PHP < 8.0提供修复)。
  2. 调用Request->getReferer()方法可能会使应用程序崩溃,因为恶意客户端可以调用带有无效Referer头部的请求(问题nette/http#215)。它在eb3f6d1980c0b2552a13f5eb944d37515072c998中得到修复,但仅将方法标记为已弃用,并且尚未发布(并且可能永远不会为PHP < 8.0提供修复)。
  3. 调用Request->getRemoteHost()方法可能会使您的应用程序运行缓慢或卡住,因为Request对象在每次读取属性时都会尝试联系DNS服务器(问题nette/http#218)。

此包需要nette/http包,它不会替换它,只是扩展它。

功能

  • Request->Url对象中删除敏感数据。
  • 修复了带有无效Referer的请求导致的程序崩溃。
  • 修复了与远程主机相关的性能问题。

安装

composer require jakubboucek/safe-request

使用方法

替代

$request = (new \Nette\Http\RequestFactory)->fromGlobals();

使用

$request = (new \JakubBoucek\SafeRequest\SafeRequestFactory)->fromGlobals();

您可以使用以下方法获取Basic认证用户凭据

$user = $request->getUser();
$pass = $request->getPassword();

您可以使用以下方法获取带有Basic认证用户凭据的Url

$url = $request->getUrlWithUserCredential();
echo $url; // http://user:password@example.com/

贡献

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

安全

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

许可证

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

原始代码许可证

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