corazawaf/coraza

GitHub: corazawaf/coraza

基于 Go 语言的开源 Web 应用防火墙库,兼容 ModSecurity 规则语法和 OWASP CRS v4,可嵌入各类反向代理构建应用层安全防护。

Stars: 3334 | Forks: 310

  Coraza - Web Application Firewall

[![Regression Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6fd13e6ab8131427.svg)](https://github.com/corazawaf/coraza/actions/workflows/regression.yml) [![Coreruleset Compatibility](https://img.shields.io/badge/Coreruleset%20Compatibility-100%25-brightgreen)](#) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/87f0405cd9131428.svg)](https://github.com/corazawaf/coraza/actions/workflows/codeql-analysis.yml) [![codecov](https://codecov.io/gh/corazawaf/coraza/branch/main/graph/badge.svg?token=6570804ZC7)](https://codecov.io/gh/corazawaf/coraza) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![OWASP Production Project](https://img.shields.io/badge/owasp-production%20project-brightgreen)](https://owasp.org/www-project-coraza-web-application-firewall) [![GoDoc](https://godoc.org/github.com/corazawaf/coraza?status.svg)](https://godoc.org/github.com/corazawaf/coraza/v3) Coraza 是一个开源的、企业级、高性能 Web Application Firewall (WAF),时刻准备着保护您珍爱的应用。它使用 Go 编写,支持 ModSecurity SecLang 规则集,并与 OWASP Core Rule Set v4 100% 兼容。 * 网站: * 论坛: [Github Discussions](https://github.com/corazawaf/coraza/discussions) * OWASP Slack 社区 (#coraza): * 规则测试: [Coraza Playground](https://playground.coraza.io)
主要特性: * ⇲ **Drop-in** - Coraza 是一个替代引擎,与 ~~Trustwave~~[OWASP ModSecurity Engine](https://github.com/owasp-modsecurity/modsecurity/) 部分兼容,并支持行业标准的 SecLang 规则集。 * 🔥 **Security** - Coraza 运行 [OWASP CRS](https://coreruleset.org) **v4** (前身为 Core Rule Set),以最低的误报率保护您的 Web 应用程序免受各种攻击,包括 OWASP Top Ten。CRS 可防范多种常见的攻击类别,包括:SQL Injection (SQLi)、Cross Site Scripting (XSS)、PHP & Java Code Injection、HTTPoxy、Shellshock、Scripting/Scanner/Bot Detection & Metadata & Error Leakages。请注意,旧版本的 CRS 不兼容。 * 🔌 **Extensible** - Coraza 本质上是一个库,拥有许多集成方案,用于部署本地 Web Application Firewall 实例。Audit Loggers、持久化引擎、操作符、动作,您可以创建自己的功能,随心所欲地扩展 Coraza。 * 🚀 **Performance** - 无论是大型网站还是小型博客,Coraza 都能以最小的性能影响承担负载。查看我们的 [Benchmarks](https://coraza.io/docs/reference/benchmarks) * ﹡ **Simplicity** - 任何人都能够理解和修改 Coraza 源代码。使用新功能扩展 Coraza 非常容易。 * 💬 **Community** - Coraza 是一个社区项目,欢迎各种贡献,所有想法都会被考虑。在 [CONTRIBUTION](https://github.com/corazawaf/coraza/blob/main/CONTRIBUTING.md) 文档中查找贡献者指南。
## 集成 Coraza 项目为以下服务器维护实现和插件: * [Caddy Reverse Proxy and Webserver Plugin](https://github.com/corazawaf/coraza-caddy) - 稳定,需要维护者 * [Proxy WASM extension](https://github.com/corazawaf/coraza-proxy-wasm) 用于支持 proxy-wasm 的代理(例如 Envoy) - 稳定,仍在开发中 * [HAProxy SPOE Plugin](https://github.com/corazawaf/coraza-spoa) - 实验性 * [Coraza C Library (For nginx, etc)](https://github.com/corazawaf/libcoraza) - 实验性 * [RuiQi WAF](https://github.com/HUAHUAI23/RuiQi) - Coraza SPOA 的 Web 管理面板和增强流量控制 - 实验性 ## 环境要求 * Go v1.22+ 或 tinygo 编译器 * Linux 发行版(推荐 Debian 或 Centos),Windows 或 Mac。 ## Coraza 核心用法 Coraza 可以作为库用于您的 Go 程序,以实现安全中间件或将其与现有的应用程序和 Web 服务器集成。 ``` package main import ( "fmt" "github.com/corazawaf/coraza/v3" ) func main() { // First we initialize our waf and our seclang parser waf, err := coraza.NewWAF(coraza.NewWAFConfig(). WithDirectives(`SecRule REMOTE_ADDR "@rx .*" "id:1,phase:1,deny,status:403"`)) // Now we parse our rules if err != nil { fmt.Println(err) } // Then we create a transaction and assign some variables tx := waf.NewTransaction() defer func() { tx.ProcessLogging() tx.Close() }() tx.ProcessConnection("127.0.0.1", 8080, "127.0.0.1", 12345) // Finally we process the request headers phase, which may return an interruption if it := tx.ProcessRequestHeaders(); it != nil { fmt.Printf("Transaction was interrupted with status %d\n", it.Status) } } ``` [Examples/http-server](./examples/http-server/) 提供了一个练习 Coraza 的示例。 ### 构建标签 Go 构建标签可以在编译时调整某些功能。这些仅适用于高级用例,并且不保证在次要版本间具有兼容性 - 请谨慎使用。 * `coraza.disabled_operators.*` - 从编译中排除指定的操作符。如果使用 `plugins.RegisterOperator` 覆盖操作符以减少二进制大小/启动开销,则特别有用。 * `coraza.rule.multiphase_evaluation` - 允许在变量准备就绪的阶段对其进行评估,而不仅仅是在规则定义的阶段。 * `memoize_builders` - 为正则表达式和 aho-corasick 字典启用构建器记忆化,以减少启动多个 coraza 实例的部署中的内存消耗。更多背景信息请查看 [this issue](https://github.com/corazawaf/coraza-caddy/issues/76) * `no_fs_access` - 表示目标环境无法访问文件系统,以便不利用操作系统的文件系统相关功能,例如文件体缓冲区。 * `coraza.rule.case_sensitive_args_keys` - 启用 ARGS 键的区分大小写匹配,使 Coraza 行为与 RFC 3986 规范保持一致。它将在下一个主要版本中默认启用。 * `coraza.rule.no_regex_multiline` - 禁止在 `@rx` 操作符中默认启用正则表达式多行修饰符。这与 CRS 预期行为一致,减少了误报并可能提高性能。下一个主要版本将默认不启用多行正则表达式。更多背景信息请查看 [this PR](https://github.com/corazawaf/coraza/pull/876) * `coraza.rule.mandatory_rule_id_check` - 启用严格规则 ID 检查,即所有 SecRule/SecAction 都必须包含 `id` 动作。 ## E2E 测试 [`http/e2e/`](./http/e2e) 提供了运行 e2e 测试的工具。 它可以独立用于针对您自己的 waf 部署: ``` go run github.com/corazawaf/coraza/v3/http/e2e/cmd/httpe2e@main --proxy-hostport localhost:8080 --httpbin-hostport localhost:8081 ``` 或者通过导入作为库使用: ``` "github.com/corazawaf/coraza/v3/http/e2e" ``` 作为库用法的参考,请参阅 [`testing/e2e/e2e_test.go`](./testing/e2e/e2e_test.go)。 必须加载的预期指令和可用标志可以在 [`http/e2e/cmd/httpe2e/main.go`](./http/e2e/cmd/httpe2e/main.go) 中找到。 ## 工具 * [Go FTW](https://github.com/coreruleset/go-ftw): 规则测试引擎 * [Coraza Playground](https://playground.coraza.io/): 沙箱规则测试 Web 界面 * [OWASP Core Ruleset](https://github.com/coreruleset/coreruleset/): 出色的规则集,与 Coraza 兼容 ## 开发 Coraza 开发仅需 Go。您可以运行 `mage.go` 来发出开发命令。 查看命令列表 ``` $ go run mage.go -l Targets: check runs lint and tests. coverage runs tests with coverage and race detector enabled. doc runs godoc, access at http://localhost:6060 format formats code in this repository. fuzz runs fuzz tests lint verifies code quality. precommit installs a git hook to run check when committing test runs all tests. ``` 例如,要在提交前格式化您的代码,请运行 ``` go run mage.go format ``` ## 贡献 欢迎贡献!请参考 [CONTRIBUTING.md](./CONTRIBUTING.md) 获取指南。 ## 安全 如需报告安全问题,请遵循 [this link](https://github.com/corazawaf/coraza/security/advisories/new) 并添加问题描述、重现步骤、受影响的版本,以及已知的问题缓解措施(如有)。 我们的漏洞管理团队将在收到报告后的 3 个工作日内回复。如果问题被确认为漏洞,我们将发布安全公告。本项目遵循 90 天的披露时间表。 ## 致谢 * OWASP Coreruleset 团队提供的 CRS 及其帮助 * Ivan Ristić 创建了 ModSecurity ## 感谢所有贡献者 首先,非常感谢 [Juan Pablo Tosso](https://twitter.com/jptosso) 启动这个项目,并在 Coraza 周围建立了一个惊人的社区! 今天我们拥有许多出色的贡献者,没有你们我们无法做到这一切! Made with [contrib.rocks](https://contrib.rocks).
标签:AppImage, CISA项目, CRS, EVTX分析, Go, Golang, HTTP安全, ModSecurity, OWASP核心规则集, Ruby工具, SecLang, WAF, Web应用防火墙, YAML, 中间件, 入侵防御, 安全库, 安全编程, 日志审计, 流量过滤, 漏洞防护, 网络安全, 防护引擎, 隐私保护