sjc5/paranoid
GitHub: sjc5/paranoid
Paranoid 是一个 Rust 库,提供防误用的加密、标识符、并发锁、Web 安全辅助及基于 Postgres 的分布式协调原语,帮助开发者降低安全敏感场景的实现风险。
Stars: 1 | Forks: 0
**警告:** _Paranoid 目前处于 alpha 阶段,尚未经过正式的安全审计。
请自行承担风险并谨慎使用,并知悉在可预见的未来中会有
频繁的破坏性变更。_
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`。
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安全, 分布式系统, 可视化界面, 响应大小分析, 密码学, 手动系统调用, 蓝队分析, 通知系统