snoopyhzy
snoopyhzy
solved http://www.docjar.com/html/api/sun/security/util/Debug.java.html java.security.debug=access can find that javassist catch
自己其实也一直想写个不依赖于SONAR的MYBATIS或IBATIS SQL分析器,包括去支持SQL注入风险检测(主要是$替换在where中使用,in ('') 和 函数出现这种场景多一点),主要是个人不太会写XML读取一直没有找到一个好点的反向MYBATIS XML为SQLID对照关系的开源代码。 这个其实感觉和博主没引入任何一个SQL解析器通过生成SQL的AST语法树有关系。 个人觉得可以尝试使用druid的sqlparser进行这个事情,但这个可能也没有行号,博主通过内容去匹配行号,在小的规范的项目里可能还没什么,我们的项目一个XML里有几千个语句可能就不适合了。 如果通过AST去处理这个事情,那参数里可能就要加数据库类型,比如MYSQL还是ORACLE还是PG之类的了。 当然引入AST后可以基于SQL语法做更多的判定,包括性能判定。 比如博主认为1=1是个风险点,我们内部也这样查过,但不能用1等于1,需要判定恒等,否则很大程度上开发会通过2=2来规避这个规则。并且1=1是一个拼接条件表达式的必要内容,用这个判定风险,误报的概率可能会非常大,比较合适的做法是通过AST语法树,判定WHERE 节点中,非可选的是否只有一个恒等表达式。 就性能上,一些做法的参考,包括 1.纯基于语法,比如去判定,是否存在笛卡尔积。 2.通过JDBC关联一下数据库,获取一些METADATA,包括索引/索引字段信息,去判定OTLP语句有没有正确使用索引等等。 但感觉这些就要对这个工具做比较大的改造了,毕竟基于AST和基于纯文本的扫描规则,差异还是很大的。
@donghui AST的话,相关的内容我已经内部实践过了,也自己查过mybatis的了,但mybatis有一些语法要完全从XML还原为SQL还是很麻烦的,比如trim标签/if标签等等。 因为公司的一些要求的原因不能开源。 用的druid的ast,写法在官方都有说明 https://github.com/snoopyhzy/druid-sql-ast-gui 是直接用visit访问,每个检查规则都继承了vistor很方便的 https://github.com/alibaba/druid/wiki/SQL_Parser_Demo_visitor 然后用java spi或者其他方法来注册规则,以实现规则的动态配置。 我自己也写了个小工具来快速的查看AST语法树的结构,小工具是我非工作时间开发的,所以可以开源,https://github.com/snoopyhzy/druid-sql-ast-gui,找到语法树对应的节点,override一下visit方法,把具体的结果加到结果报告里就好了。
> @snoopyhzy 谢谢你的反馈,我学习下~~ 其实关注到您这个项目主要是想找个MYBATIS的解析插件把行号和对应的SQL解析出来。 fock了一下,我来试试改,加AST,做点共享,最近写的多了有感觉,刚刚开发把内部的检查工具转SONAR插件了,被仓库KEY冲突坑了好久。- -邮件您咨询也没啥反应哈哈。。
> @snoopyhzy > 前几天比较忙把邮件提醒给关掉了,刚打开,哈哈 > 一种插件只能支持一种语言的 > 它是根据文件后缀判断是哪种语言的 > 一个文件貌似也只能被一种语言的插件解析 不是,一个插件可以多语言的,我已经成了,我的问题是仓库的KEY重了。一开始没注意到web.log,只看了sonar.log。
@donhui 就这个ISSUE做了个DEMO供您参考,SQL语言没指定就是DRUID的通用解释器,具体应该配到SONAR中应该配变量,入口类参考Checker实际上那个SQL嵌入到您那个扫描器的matchRuleAndSaveIssue方法里就可用了。 https://github.com/snoopyhzy/sonar-mybatis/commit/671df82f4b50aa84e5e74ca1bc2568e55f427323 因为做的最简单的,结果是 [Result{obj=*, rule='NoUseSelectAllColumnsRule'}] Process finished with exit code 0
> https://github.com/gretard/sonar-sql-plugin > > 这个插件里实现了,而且他的描述比较美观,可以参考 > >  哇,自从你离开sdc以后,很久没看到你在wiki更新了,没想到还能在github看到
自己没双网卡 抓包比较困难,感谢@lucifersun 保留的原始频道数据中,就有组播源,igmp://开头的相关地址改为rtp://路由器wan口能往下转发组播地址的就能正常在家里用手机访问rtp://开头的地址了。 路由untag vlan85 没有深入研究这个组播是只要在电信路由4k的iptv口 就是3 4口就能收到还是在vlan85里的
> 直播是IPTV专网(B平面)上,通过igmp组播实现的。 > 如果想在电脑上看直播,必须在B平面上搭建igmpproxy服务,把组播数据包转发出来,很烦。 > 而且有能力搞定这些,自己抓个包,建个播放列表也是很方便的,我就不多此一举了。 没有您想的那么复杂,现在很多路由器尤其是以前大批量的斐讯,刷了老毛子之类的固件自带了组播包的转发功能,界面就能配置其实就缺少组播源不知道自己有没有配置成功,我也是找了很久才在一个人的图片上发现了一个组播源地址,最后发现和频道列表里igmp://开头的端口基本一致才发现是可行的 手机不能传附件 大概如下大部分都能看,我最喜欢的全纪实高清也正常 `直播源: [IPTVSH_m3u8.zip](https://github.com/lucifersun/China-Telecom-ShangHai-IPTV-list/files/2889749/IPTVSH_m3u8.zip) 超级直播可以用的回访+点播: [IPTVALL.txt](https://github.com/lucifersun/China-Telecom-ShangHai-IPTV-list/files/2889752/IPTVALL.txt)
> 直播是IPTV专网(B平面)上,通过igmp组播实现的。 > 如果想在电脑上看直播,必须在B平面上搭建igmpproxy服务,把组播数据包转发出来,很烦。 > 而且有能力搞定这些,自己抓个包,建个播放列表也是很方便的,我就不多此一举了。 已测 现在一般用于4k iptv 的3 4口直接可以打开组播信号