org_heigl / password-middleware
一个用于安全处理密码的中间件
0.1.0
2020-11-21 17:48 UTC
Requires
- php: ^7.3|^8.0
- org_heigl/password: ^1.0.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^2.5
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-22 02:01:41 UTC
README
当您处理密码时,应尽快将通过网络发送的明文转换为无法泄露明文密码的内容。
为此,我创建了一个密码值对象,它可以替代密码,并允许您安全地处理它以适应您的任何需求。
然而,值对象中缺少的是从请求中实际获取密码并直接转换的可能性。这正是此中间件所做的事情。它拦截请求,将配置的每个参数转换为密码值对象,并替换请求中的明文密码。
这仅适用于通过POST请求发送的表单参数。您绝对不应该通过GET参数发送密码或其他敏感信息,因为它们将被记录在服务器的访问日志中!!!
安装
我真的需要描述这一点吗?
$ composer install org_heigl/password-middleware
用法
use Org_Heigl\PasswordMiddleware\PasswordMiddleware; use Slim\App; $app = new App(); $app->add(new PasswordMiddleware('password', 'password-verification'));
现在您可以在控制器中使用这个中间件
class Controller { public function handle($request, $response): ServerResponse { /** @var \Org_Heigl\Password\Password $password */ $password = $request->getParsedBody()['password']; $passwordVerification = $request->getParsedBody()['password-verification']; if ($password == $passwordVerification) { throw new RuntimeException('Passwords do not match'); } } }
注意:目前,只有解析体的第一级字段可用!因此,如果嵌套参数,则目前无法使用!这是即将实施的下个功能之一!
注意:目前不会修改原始体!因此,明文密码将始终存在于原始请求流中!这也是列表上的下一个待办事项!