我想知道 ModSecurity 是否能够进行审查。
例如应用程序的响应是:
{“错误”:空, “id”:“1”, "结果": [ { "名称": "苍蝇", "类别": "昆虫" }, { "名称": "蜘蛛", "类别": "蜘蛛"} ] }
我们希望将以下响应发送给客户端,不带“蜘蛛”部分:
{“错误”:空, “id”:“1”, "结果": [ { "名称": "飞行", "类": "昆虫" } ] }
我们需要这个,因为应用程序的编辑器无法使用请求中的某些过滤器来执行此类响应。
我找不到任何信息来知道这是否可能,如果可能的话如何做到。
所以我尝试过类似的规则......
SecRule RESPONSE_BODY "@rx .*" "id:100,phase:4,exec:/usr/local/bin/change-response-body.lua,allow"
...以及一个change-response-body.lua脚本,例如:
#!/usr/bin/lua
function main()
local respBody = m.getvar("RESPONSE_BODY")
-- some parsing on respBody
respBody = "just a try"
m.setenv("RESPONSE_BODY", respBody)
m.setvar("RESPONSE_BODY", respBody )
return 1
end
而且它不起作用。
你能帮我一下吗?
提前致谢。
旋转
可以通过将操作 @rsub 应用于 STREAM_OUTPUT_BODY 变量来完成此操作。为此,您需要将 ModSecurity 指令
SecStreamOutBodyInspection
和 SecContentInjection
设置为 On
(这可能会对性能产生负面影响,请阅读文档)。