security-rust 4.0.0

A pure Rust attack detection library with 32 detectors across 4 categories — injection, protocol, data, and file — plus stateful session, throttling, and risk scoring. Zero framework dependencies.
Documentation
# Copyright (c) 2026 erik <erik@erik.xyz> — https://erik.xyz

[package]
name = "security-rust"
version = "4.0.0"
edition = "2024"
rust-version = "1.88"
description = "A pure Rust attack detection library with 32 detectors across 4 categories — injection, protocol, data, and file — plus stateful session, throttling, and risk scoring. Zero framework dependencies."
license = "MIT"
repository = "https://github.com/erikwang2013/security-rust"
authors = ["erik <erik@erik.xyz>"]
keywords = ["security", "security-rust", "xss", "sql-injection", "waf"]
categories = ["security", "parsing"]
# 随包只发「读代码 / 用库」要用的东西。`docs/pet.svg` 不能排 —— src/pet.rs 用
# include_str! 内联它,排掉就编译不过(cargo package 会当场报错,不会静默漏发)。
exclude = [
    "CLAUDE.md",         # 仓库的 agent 配置,与使用者无关
    "docs/coin",         # 打赏码原图 ~1.2MB
    # 12 语言译文 ~2.1MB,纯为体积排除。注意:README.md 本身随包发布,而它的语言
    # 切换区链接指向这 12 个 README —— 排掉后这些链接在 crates.io 上会降级为死链,
    # 属于已知的取舍,不是「包内无引用」。
    "docs/i18n",
    "docs/superpowers",  # 设计与计划留档(流程产物)
    "docs/code-review-2026-07-29.md",  # 评审留档,包内无引用
    "docs/test-report-2026-08-27.md",  # 测试报告留档,包内无引用
]

[dependencies]
regex = "1"

[dev-dependencies]
# 只给 examples/ 用。本 crate 的零依赖承诺针对 [dependencies] ——
# 运行时依赖永远只有 regex。
axum = "0.8"
tokio = { version = "1", features = ["macros", "rt"] }
tower = { version = "0.5", features = ["util"] }