1)我已经使用 --with-yajl 使用 YAJL 编译了 modsecurity 但在配置日志中我看到未选择 yajl 库,并且在 modsecurity 日志中我得到“未启用 JSON 支持”
2 回答
我最初让 mod_security 使用 PHP 5.5 和 Apache 2.4 以及 Ubuntu 12.04,但是在启用 JSON 请求检查后,我得到了与您报告的相同的错误。
要修复它,我必须制作 yajl,使用 yajl 配置选项重新编译 mod_security,然后确保 Apache 使用更新的 mod_security,然后重新启动 Apache。
mod_security 然后能够成功解析 json 请求正文并且不再输出错误。
我去http://lloyd.github.io/yajl/找到了yajl-2.1.0的下载包,然后参考了https://gist.github.com/rpfilomeno/1140359f4bd360137a98。
例如:
tar -xvzf lloyd-yajl-2.1.0-0-ga0ecdde.tar.gz
cd lloyd-yajl-66cb08c/
sudo ./configure
sudo make
sudo make install
sudo ldconfig
那应该安装yajl。然后cd
到带有 mod_security 文件的文件夹,然后运行
cd ../modsecurity-2.9.1/
sudo ./configure --with-yajl="/usr/local/lib /usr/local"
sudo make
sudo make install
然后我将其配置为使用 Apache 2.4 运行,并且能够解析带有 JSON 正文的请求。
*注意,在制作yajl时,如果出现cmake未安装的错误,请运行以下命令sudo apt-get install cmake
,然后再尝试制作。
检查您的 config.log 是否有以下内容
checking for libyajl config script... no
checking for yajl install... no
configure: optional yajl library not found
然后创建一个指向 yajl.pc 的链接
# ln -s /usr/local/share/pkgconfig/yajl.pc /usr/share/pkgconfig/yajl.pc
在我的情况下,文件 yajl.pc 位于 /usr/local/share/pkgconfig/ 位置。如果在那里找不到它,请尝试“find / -name yajl.pc”来定位它。
希望这对您有所帮助。