如this article所示,DB2可能容易受到SQL注入的攻击:
* Potential SQL injection if X, Y or Z host variables come from untrusted input
STRING "INSERT INTO TBL (a,b,c) VALUES (" X "," Y "," Z ")" INTO MY-SQL.
EXEC SQL PREPARE STMT FROM :MY-SQL END-EXEC.
EXEC SQL EXECUTE STMT END-EXEC.
我的问题是本机IMS命令是否容易受到这种(或类似的)注入攻击?例如,通过在the ISRT DLI command中插入恶意输入。
答案 0 :(得分:2)
这取决于您打算如何访问IMS数据库。
从IBM document报价。
您通过Web界面或 ISPF接口在IMS中作为IMS应用程序编程API执行。 z /OS®中的IMS SPUFI应用程序。您可以选择COBOL或Java™ 在语言环境中执行SQL语句。
如果使用SQL,则可能容易受到SQL注入的攻击。</ p>
如果使用本机IMS命令,则可能不会。但是,即使对于本机IMS命令,清理输入内容仍然是一个好主意。
答案 1 :(得分:1)
是的,所有支持运行时解析SQL查询字符串的SQL数据库都容易受到SQL注入的影响。
SQL注入不是数据库技术中的缺陷,而是您编写的用于构建SQL查询字符串的客户端代码中的缺陷。
答案 2 :(得分:1)
我是IBM IMS团队的成员。
IMS DL / I调用不是动态的,因此不像SQL调用那样容易受到影响。 CALL xxxTDLI IMS API没有注入风险。话虽这么说,COBOL程序可以通过允许输入程序影响SSA列表或传递给xxxTDLI的IOAREA参数来开放风险。因此,针对这些接口进行编程时应遵循安全的工程实践。
答案 3 :(得分:1)
否,IMS DL / I数据库根本不解析记录。将其视为像Cassandra这样的NoSQL数据库的早期版本。段键被解析为二进制值,但是您不能像在SQL数据库中那样进行注入。
并且取决于程序员/ IMS-管理员的技能,可以通过限制PSB中PCB的PROCOPT对程序可用的可用CRUD操作的范围来关闭攻击媒介。
大多数IMS-system + DB2使用静态SQL,因此该语句已经准备好并且不容易受到SQL注入攻击。