oracle转义函数

标签 oracle escaping sql-injection

oracle中是否有任何函数可以在sql查询中转义错误的字符?我有从不同字符串构建查询的代码,其中一些可能包含 '字符,这会破坏 sql 查询。

最佳答案

正如 Yahia 所指出的,您应该始终使用绑定(bind)变量,而不是动态地动态组装 SQL 语句。这是保护自己免受 SQL 注入(inject)攻击的正确方法。转义字符串提供了低得多的保护级别。

话虽如此,假设您使用的是 Oracle 10.1 或更高版本,您可以使用 q 引用语法。就像是

  1  select q'[This is a string with an embedded ']' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '

您可以将 [ 和 ] 字符替换为许多其他字符,具体取决于字符串中可能出现的字符
  1  select q'<This is a string with an embedded '>' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '

SQL> ed
Wrote file afiedt.buf

  1  select q'{This is a string with an embedded '}' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '

关于oracle转义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133317/

相关文章:

java - Oracle SQL Developer 的 JDK 安装的完整路径名

Python 子进程在 Windows 上删除 reg key

jquery-validate - 我应该允许在名字和姓氏中使用下划线吗?

sql - 在 Oracle 中强制使用索引

oracle - 几个Oracle Pl/SQL 包的编译可以是一个原子操作吗?

sql - 使用预定义的系统函数将分隔字符串(或列)转换为 Oracle 中的行

c# - 清理非英文字母以在 URL 中安全使用

sql - 如何在查询中使用 FOR XML PATH ('' )而不转义特殊字符?

PHP 邮件清理技术

php - 如何防止 PHP 中的 SQL 注入(inject)?