org_heigl/password-middleware

一个用于安全处理密码的中间件

0.1.0 2020-11-21 17:48 UTC

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');
        }
    }
}

注意:目前,只有解析体的第一级字段可用!因此,如果嵌套参数,则目前无法使用!这是即将实施的下个功能之一!

注意:目前不会修改原始体!因此,明文密码将始终存在于原始请求流中!这也是列表上的下一个待办事项!