JDBC中SQL注入与注入攻击原理
最近在学jdbc的数据库连接
里面讲到sql注入,没明白,后来搜wiki,解释真的是十分清楚。 里面讲到sql注入,没明白,后来搜wiki,解释真的是十分清楚。
作用原理[]
- SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
- SQL命令对于传入的字符串参数是用单引号字符所包起来。(但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符)
- SQL命令中,可以注入注解(连续2个减号字符 -- 后的文字为注解,或“/*”与“*/”所包起来的文字为注解)
- 因此,如果在组合SQL的命令字符串时,未针对单引号字符作替换处理的话,将导致该字符变量在填入命令字符串时,被恶意窜改原本的SQL语法的作用。
- 例子: 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注入攻击
- 某个网站的登录验证的SQL查询代码为
上一篇:
IDEA上Java项目控制台中文乱码