sjc5/paranoid

GitHub: sjc5/paranoid

Paranoid 是一个 Rust 库,提供防误用的加密、标识符、并发锁、Web 安全辅助及基于 Postgres 的分布式协调原语,帮助开发者降低安全敏感场景的实现风险。

Stars: 1 | Forks: 0

**警告:** _Paranoid 目前处于 alpha 阶段,尚未经过正式的安全审计。 请自行承担风险并谨慎使用,并知悉在可预见的未来中会有 频繁的破坏性变更。_ Paranoid banner Paranoid 是一个由防误用的应用安全和分布式系统 原语组成的库。 此 crate 被组织为一小套意图明确的命名空间: - `paranoid::crypto`:类型化加密、密钥集、基于机密字节的 MAC、边缘编解码器,以及 字节容器原语 - `paranoid::id`:可排序的带时间戳标识符和纯随机文本 ID - `paranoid::local_lock`:带有心跳恢复功能的本地进程文件锁 - `paranoid::local_env_vault`:本地加密环境保险库封装器 - `paranoid::web`:安全 cookie 和 CSRF 辅助工具 - `paranoid::db`:Paranoid 拥有的 SQLx/Postgres 连接池和事务封装器 - `paranoid::kv`:基于 Postgres 的键控状态,支持面向 TTL 的操作 - `paranoid::fleet`:基于 Postgres 的协调原语 - `paranoid::queue`:基于 Postgres 的持久化工作队列 默认禁用所有功能。使用者可选择启用他们使用的命名空间:`crypto`、`id`、 `local-lock`、`local-env-vault`、`web` 或 `db`。 ## 功能选择 仅启用你的 crate 使用的命名空间: ``` [dependencies] paranoid = { version = "0.X.Y", features = ["crypto"] } ``` 功能组是有意组合的: - `crypto`:类型化加密、密钥集、MAC 和边缘编解码器 - `id`:不依赖 crypto 栈的可排序和随机 ID - `local-lock`:由心跳支持的本地进程文件锁 - `local-env-vault`:本地加密环境保险库,包含 `crypto` 和 `local-lock` - `web`:cookie 和 CSRF 辅助工具,包含 `crypto` - `db`:基于 Postgres 的 KV、Fleet、Queue 和 SQLx 封装器,包含 `crypto` 和 `id` ## Postgres 架构 由数据库支持的后端仅兼容 Postgres,并且其设计旨在保持与 事务模式的连接池兼容。Paranoid 的内部不依赖咨询锁、 `LISTEN`/`NOTIFY` 或任何其他需要跨事务保留 session 状态的 Postgres 行为。 Paranoid 通过其自身的配置路径构建其 SQLx 连接池,因此内部 可移植性保证处于库的控制之下。`paranoid::db::Pool` 和 `paranoid::db::Tx` 是中立的数据库句柄;它们不暗含特定的数据库 权限。`paranoid::db::WritePool` 和 `paranoid::db::WriteTx` 是标记性封装器, 供其现有行为需要写入权限的 Paranoid API 使用。这些标记性封装器 不会检查、削减或强制执行 Postgres 权限。请使用 专供该调用点使用的连接 URL 和数据库角色来构建每个连接池。 应用程序可以将暴露的 SQLx 连接池和活动事务访问器用于应用自有的 表和查询。应用自有的 SQL 可以照常使用原生 SQLx。当应用程序希望其 自己的 SQL 遵循 Paranoid 的可移植执行风格时,可以在显式的 Paranoid 事务中使用 `paranoid::db::portable_query`、`paranoid::db::portable_query_as` 或 `paranoid::db::portable_query_scalar`。
标签:PostgreSQL, Rust库, Web安全, 分布式系统, 可视化界面, 响应大小分析, 密码学, 手动系统调用, 蓝队分析, 通知系统