我有networkingstream量通过ModSecuritystream动。
在ModSecurityconfiguration中,我正在调用一个Lua脚本,对请求string的参数进行一些简单的分析。 具体来说,它是检查跨站脚本的证据,如果存在一些证据,将阻止传入的stream量。
ModSecurity规则引擎configuration如下:
SecRuleEngine On SecRuleScript "/path/to/lua/script/detectXSS.lua" "block"
lua脚本的一个说明性例子如下:
function main() -- Retrieve script parameters local d = m.getvars("ARGS", { "lowercase", "htmlEntityDecode" } ); -- Loop through the parameters for i = 1, #d do -- Examine parameter value. if (string.find(d[i].value, "<script")) then return ("Suspected XSS in variable " .. d[i].name .. "."); end end -- Nothing wrong found. return nil; end
尽pipe可以检测并返回XSS,但阻塞function不会发生。 有明显的缺失吗? 任何帮助将不胜感激。
干杯
尽pipe你可能认为block不实际阻止请求。 你需要使用deny 。
这是block的原因是一个特别定义的行动,然后你可以定义如何处理。 当规则阻止时,您可以拒绝,只是login或redirect到错误页面。 这是用SecDefaultAction设置的,默认是传递规则,如下所示: https : //github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecDefaultAction 。 虽然这看起来没有什么意义,但它也允许您在OWASP CRS中轻松地打开或closuresexception评分 。
所以要么改变你的SecRuleScipt来deny而不是block :
SecRuleEngine On SecRuleScript "/path/to/lua/script/detectXSS.lua" "deny"
或者,可以设置默认的block操作来拒绝:
SecRuleEngine On SecDefaultAction "phase:2,deny" SecRuleScript "/path/to/lua/script/detectXSS.lua" "block"
关于block更多细节,请看这里: https : //github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#block