oracle - 如何使用 regexp_like 查询安全地防止 Oracle 的 sql 注入
问题描述
我处于一种奇怪的情况,我必须在 Oracle 中使用 REGEXP_LIKE 来防止通过字符串查询进行 SQL 注入。由于性能问题,我无法使用准备好的语句。当使用准备好的语句版本时,Oracle 需要两倍的时间来处理导致我们生产环境中超时的查询。
通常我会使用 oracle 的转义运算符 { 和 } 之类的东西,但在这种情况下,它们在正则表达式中有意义并且似乎不起作用。除了单引号之外,对于这样的正则表达式情况,我还需要注意什么?
查询示例
SELECT * FROM table where somecolumn = 2 and regexp_like(column, '\Wmy text\W|\Wfoo\W');
虽然我已经看到其他关于手动保护免受 sql 注入的问题,但没有一个处理像这样的正则表达式案例。
aq escape会这样工作吗?
SELECT * FROM table where somecolumn = 2 and regexp_like(column, q'[\Wmy text\W|\Wfoo\W]');
解决方案
推荐阅读
- json - 更改 JSON 结构以发送 API 发布请求
- javascript - 如何为 Illustrator 脚本引用另一个 JS 文件?
- angular - 显示和隐藏下拉列表Angular 9的容器
- delphi - 在运行时更改 TMS DBAdvgrid 单元格值
- excel - 用VBA计算一列中的数字
- javascript - 如何添加事件处理程序以从猫鼬动态获取数据
- kubernetes - Istio:sidecar EnvoyFilter 工作负载选择器没有过滤
- php - 从包中扩展 Laravel 项目模型
- python-3.x - pytest 是否提供了一种从 yml 或 conf 文件中自动读取测试属性的方法?
- swift - 获取自行增加的 Unix 时间戳