hktr92 / php-secrecy
Secrecy 可以尽可能安全地保护您的敏感数据不被泄露。
0.1.0
2022-11-05 23:42 UTC
Requires
- php: >=7.3.0
- prewk/result: 3.1
README
Secrecy 可以尽可能安全地保护您的敏感数据不被泄露。
它为以下事件提供保护
- 意外的
__toString()
转换,例如在记录日志时; - 禁止
clone
以保持数据在单个位置; - 防止在
\serialize()
、var_dump()
和var_export()
中泄露; - 拒绝来自
\unserialize()
的不安全输入;
免责声明
这个库 不提供 任何密码散列功能,也不提供任何类型的数据内存“加密”。它只是尽可能防止在各种模式和位置泄露敏感数据。
它不是100%无懈可击的,因为它需要一个单独的流来保存密码,这个密码可以随时访问。
用法
<?php use Hktr92\Secrecy\Secrecy; use Hktr92\Secrecy\SecrecyFactory; /** @var Secrecy $password */ $password = SecrecyFactory::create("my super secret value")->unwrap(); echo "User password is $password"; // outputs "User password is <redacted>" $pdo = new PDO(...); $stmt = $pdo->prepare("INSERT INTO `users` SET `email` = ?, `password` = ?"); $stmt->execute(['user@example.com', password_hash($password->expose())]); // works as expected
主要注意事项: var_export()
Secrecy 使用流资源来隐藏秘密值,防止其通过 var_export()
泄露。
它的行为方式
这个库是从零开始构建的,旨在尽可能防止PHP的任何混乱行为。因此,该库 保证 在出错的情况下,您将收到一个有效的 string
或一个 Throwable
。
库仅在构造函数没有接收到有效的资源时才会崩溃(例如抛出 InvalidArgumentException
)。