jdbc参数化sql注入,如何在Oracle中找到最终的执行语句

pec0105 2019-01-02 01:50:52
求助,哪位大佬知道jdbc参数化sql注入,如何在Oracle中找到最终的执行语句?

例如:我的jdbc在程序中写的select * from user where userId=?,然后执行时,传参数userId

没有在程序中打印日志,然后想要知道最终执行的sql中userId是多少,怎么在Oracle本身的日志中找到最终的执行结果?

我在网上看到的,查询select * from v$sql 可以找到历史执行
但是带参数sql的里面记录的是select * from user where userId:1,并没有参数值。
...全文
304 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pec0105 2019-04-18
  • 打赏
  • 举报
回复
引用 5 楼 xxfamly 的回复:
理论上是应该可以找到执行jar包中sql前的参数情况,但是目前没定位着,所以想通过Oracle查看绑定变量的值,可以用你找到的sql_id查询这个视图V$SQL_BIND_CAPTURE,V$SQL_BIND_CAPTURE的收集频率默认900秒,通过执行
alter system set "_cursor_bind_capture_interval"=5 scope=both;
来改变收集频率,更精准得到绑定变量的值。
这个是可以的,找到了,非常感谢!
xxfamly 2019-01-07
  • 打赏
  • 举报
回复
理论上是应该可以找到执行jar包中sql前的参数情况,但是目前没定位着,所以想通过Oracle查看绑定变量的值,可以用你找到的sql_id查询这个视图V$SQL_BIND_CAPTURE,V$SQL_BIND_CAPTURE的收集频率默认900秒,通过执行
alter system set "_cursor_bind_capture_interval"=5 scope=both;
来改变收集频率,更精准得到绑定变量的值。
nayi_224 2019-01-02
  • 打赏
  • 举报
回复
引用 2 楼 pec0105 的回复:
主要是他属于jar包,我是无法编辑,无法添加代码,也没法调试
不可能有无法打印日志的持久层框架的,你只是没找对配置的方法。
卖水果的net 2019-01-02
  • 打赏
  • 举报
回复
审计、触发器,都可以。
pec0105 2019-01-02
  • 打赏
  • 举报
回复
主要是他属于jar包,我是无法编辑,无法添加代码,也没法调试
andylei 2019-01-02
  • 打赏
  • 举报
回复
1. 在程序中引用LOG4J,它可以查出SQL日志
2. 在程序中调试你传入的userid的值

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧