corazawaf/libcoraza

GitHub: corazawaf/libcoraza

libcoraza 是 OWASP Coraza WAF 的 C 语言库,使 Go 编写的 WAF 引擎可以嵌入到 C 应用程序并提供多语言绑定支持。

Stars: 28 | Forks: 11

# OWASP Coraza Web Application Firewall 的 C 语言库 欢迎使用 libcoraza,这是 OWASP Coraza Web Application Firewall 的 C 语言库。由于 [Coraza](https://github.com/corazawaf/coraza) 是使用 Go 编写的,如果您想将其嵌入到任何类型的 C 应用程序中,您将需要此库。 ## 前置条件 * C 编译器: * gcc 或 * clang * Go 编译器 v1.25+ * libtool * autotools * make ## 下载 下载库源码: ``` git clone https://github.com/corazawaf/libcoraza libcoraza ``` ## 构建 构建源码: ``` cd libcoraza ./build.sh ./configure make sudo make install ``` ## 运行测试 运行完整的测试套件(包含带有竞争检测的 Go 测试 + C 测试验证): ``` make check ``` ## 离线构建或使用不同的分支/提交 如果您想从与 main 或 HEAD 不同的分支/提交编译库,或者想离线打包,请获取代码并将其作为 vendor 使用: ``` go get -u github.com/corazawaf/coraza/v3@HASH-ID go mod vendor go mod tidy ./build.sh ./configure make ``` 如果您没有安装已构建的库(跳过了 `sudo make install` 步骤),请在运行您的应用程序之前设置库路径: ``` # Linux export LD_LIBRARY_PATH=../:$LD_LIBRARY_PATH # macOS export DYLD_LIBRARY_PATH=../:$DYLD_LIBRARY_PATH ``` ## SWIG 语言绑定 libcoraza 附带了一个 [SWIG](https://www.swig.org) 接口文件 (`coraza.i`),允许为多种语言生成绑定,包括 Python、Ruby、Java、PHP、Perl 等。 ### 前置条件 * SWIG 4.0 或更高版本 在 Debian/Ubuntu 上安装: ``` sudo apt install swig ``` 在 macOS (Homebrew) 上安装: ``` brew install swig ``` ### 现成示例 `examples/` 目录包含完全可用的示例及其各自的 Makefile: ``` # Python make -C examples/python # build make -C examples/python run # build and run # Java (需要设置 JAVA_HOME) make -C examples/java # build make -C examples/java run # build and run ``` 每个示例都演练了完整的 API,包括错误和调试日志回调。 ### 为其他语言构建绑定 首先构建库: ``` ./build.sh ./configure make ``` 然后直接针对 `coraza.i` 调用 SWIG: ``` # Ruby 示例 swig -ruby -o coraza_wrap.c coraza.i gcc -shared -fPIC coraza_wrap.c $(ruby -rrbconfig -e 'puts RbConfig::CONFIG["CFLAGS"]') \ -L. -lcoraza -o coraza.so ``` ### 注意事项 * **回调** — `coraza_set_error_callback` 和 `coraza_set_debug_log_callback` 作为 Python 和 Java 的特定语言跳板提供(请参阅 `coraza.i` 和示例目录)。对于其他语言,请参阅 SWIG 关于 `%callback` 或 director 类的文档。 * `coraza_matched_rule_get_error_log` 返回一个由调用者拥有的字符串。 生成的包装器会自动获取所有权,因此当对象被垃圾回收时,目标语言的运行时会将其释放。
标签:AppImage, CISA项目, EVTX分析, Go语言, WAF, Web安全, Web应用防火墙, 日志审计, 程序破解, 绑定库, 蓝队分析