JDBC中SQL注入与注入攻击原理

最近在学jdbc的数据库连接

里面讲到sql注入,没明白,后来搜wiki,解释真的是十分清楚。 里面讲到sql注入,没明白,后来搜wiki,解释真的是十分清楚。

作用原理[]

  1. SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
  2. SQL命令对于传入的字符串参数是用单引号字符所包起来。(但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符)
  3. SQL命令中,可以注入注解(连续2个减号字符 -- 后的文字为注解,或“/*”与“*/”所包起来的文字为注解)
  4. 因此,如果在组合SQL的命令字符串时,未针对单引号字符作替换处理的话,将导致该字符变量在填入命令字符串时,被恶意窜改原本的SQL语法的作用。
  5. 例子: strSQL = "SELECT * FROM users WHERE (name = " + userName + ") and (pw = "+ passWord +");" 恶意填入 userName = "1 OR 1=1"; 与 passWord = "1 OR 1=1"; 时,将导致原本的SQL字符串被填为 strSQL = "SELECT * FROM users WHERE (name = 1 OR 1=1) and (pw = 1 OR 1=1);" 也就是实际上运行的SQL命令会变成下面这样的 strSQL = "SELECT * FROM users;" 因此达到无账号密码,亦可登录网站。所以SQL注入攻击
  6. 某个网站的登录验证的SQL查询代码为
经验分享 程序员 微信小程序 职场和发展