CreditEaseDBA / Themis

数据库审核平台
Apache License 2.0
346 stars 167 forks source link

TOOMANY_IN_LIST规则的判定有问题 #7

Closed dikang123 closed 7 years ago

dikang123 commented 7 years ago

image 上图中,按照我的理解,TOOMANY_IN_LIST定义的应该是in子句中的item个数超过20个才判定为违法规则吧。但是给出的基于text规则的报告中,sql语句的in子句却只有两个item,明显没有违法该规则吧: image 并且总分和扣分也对不上,总分显示为98.125分,扣分显示为6分(共违反3次)

tuteng commented 7 years ago

能发一下具体的sql么

dikang123 commented 7 years ago

SELECT col1, col2, col3, col4 FROM tab_xxx WHERE (status = 0 AND config_dispatch_mode IN (1,4)) LIMIT 0,500;

tuteng commented 7 years ago

这是完整的sql么,我这边测试没有问题,有可能是sql中出现了 in () 字段导致出现误报,https://github.com/CreditEaseDBA/Themis/blob/master/rule_analysis/rule/text/toomany_in_list.py 可以参考这个具体的规则解析

himura-kenshin commented 7 years ago

是完整的sql,你可以看截图中的sql语句 ,不知道是我们的sql有问题 导致的误判

himura-kenshin commented 7 years ago

mongo里面 的参数 加 inlist_num ,代码里面 是 in_list_num 是不是这个问题导致的

tuteng commented 7 years ago

inlist_num这个确实是个问题,已经修改,非常感谢 还麻烦修改rule里的字段后再运行一下规则,测试一下

dikang123 commented 7 years ago

@tuteng 修改完之后,规则判断正常了。