我可以将字符串与AST的某个子树匹配吗?

2024-10-06 07:17:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用antlr4(+python3)来检测sql注入,现在我得到了后端sql命令“SELECT*fromAAA,其中BBB=”,以及用户的输入“CCC”

现在,解析树如下所示:

enter image description here

我的问题是,我是否可以将“CCC”(用户输入)直接匹配到子树“谓词”(参见上图),即在“谓词”处输入解析树

我有几个想法:

  1. 重写语法文件
  2. 使用访问者并跳过肯定出现在“谓词”之前的节点

这些想法很复杂,那么我应该在现有文献中寻找什么呢?或者其他建议


Tags: 文件用户命令sql节点语法select文献
1条回答
网友
1楼 · 发布于 2024-10-06 07:17:46
  1. use visitors and jump over the nodes that are sure to appear before "predicate"

当然可以:当遍历解析树并遇到用户输入时,只需“走”到节点上,直到遇到感兴趣的节点。当遍历解析树时,ANTLR会为您提供当前的解析上下文。此上下文有一个parent上下文,您可以使用它“走”到树上

相关问题 更多 >