jakubboucek / safe-request
安全HTTP请求:Nette Request对象的扩展,但已从已知的安全问题中净化
v0.9.1
2024-03-13 15:04 UTC
Requires
- php: ^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3
- nette/http: ^3.0 || ^3.1
Requires (Dev)
- nette/tester: ^2.4
This package is auto-updated.
Last update: 2024-09-13 16:13:09 UTC
README
安全HTTP请求:Nette Request对象的扩展(Nette Request对象),但已从已知的安全问题中净化。
净化的问题
- 使用Nette
RequestFactory
可能会泄露用户的Basic认证凭据,因为它默认创建带有该凭据的Url
对象并用于创建回链URL(问题nette/http#215)。它在PR#211中得到修复,但尚未发布(并且可能永远不会为PHP < 8.0提供修复)。 - 调用
Request->getReferer()
方法可能会使应用程序崩溃,因为恶意客户端可以调用带有无效Referer
头部的请求(问题nette/http#215)。它在eb3f6d1980c0b2552a13f5eb944d37515072c998中得到修复,但仅将方法标记为已弃用,并且尚未发布(并且可能永远不会为PHP < 8.0提供修复)。 - 调用
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》)保留所有权利。有关更多信息,请参阅许可证文件。