《表3 常见的字符串拼接(括号中的内容是恶意拼接的SQL)》

《表3 常见的字符串拼接(括号中的内容是恶意拼接的SQL)》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《基于B/S系统的SQL注入防御技术研究》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录

数据库中有两种传值符号,一种是$(),作用是在进行字符串拼接后,再由数据库进行编译,通常使用JDBC中的Starement对象来进行语句的执行,在数据库平台中,对特殊字符的防范是很弱的,一旦变量进入了数据库系统,很大程度上增加了SQL注入的风险;一种是#(),这种被称为占位符,在进行数据库访问的时候,先把SQL语句中需要拼接的字段通过特殊符号进行占位,然后进行数据库的预编译,预编译完成之后,在对相应字段进行字符串的拼接,注入参数后,就不会在对SQL进行编译。通常配合JDBC中的prepareStatement来进行预编译;在数据库的操作中,应该禁止$()的使用,能够有效地预防SQL的注入;#()和$()的区别如表3所示;