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应用防火墙, 日志审计, 程序破解, 绑定库, 蓝队分析