《表3 常见的字符串拼接(括号中的内容是恶意拼接的SQL)》
数据库中有两种传值符号,一种是$(),作用是在进行字符串拼接后,再由数据库进行编译,通常使用JDBC中的Starement对象来进行语句的执行,在数据库平台中,对特殊字符的防范是很弱的,一旦变量进入了数据库系统,很大程度上增加了SQL注入的风险;一种是#(),这种被称为占位符,在进行数据库访问的时候,先把SQL语句中需要拼接的字段通过特殊符号进行占位,然后进行数据库的预编译,预编译完成之后,在对相应字段进行字符串的拼接,注入参数后,就不会在对SQL进行编译。通常配合JDBC中的prepareStatement来进行预编译;在数据库的操作中,应该禁止$()的使用,能够有效地预防SQL的注入;#()和$()的区别如表3所示;
图表编号 | XD00116580200 严禁用于非法目的 |
---|---|
绘制时间 | 2020.01.01 |
作者 | 吴涛、张俊 |
绘制单位 | 攀枝花学院、攀枝花学院 |
更多格式 | 高清、无水印(增值服务) |