首先要知道什么是SQL注入?
SQL注入(英语:SQL injection),也称SQL注入或SQL注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而执行,因此遭到破坏或是入侵。
SQL注入的原理?
1.SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
2.SQL命令对于传入的字符串参数是用单引号字符所包起来。(但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符)
3.SQL命令中,可以注入注解(连续2个减号字符 – 后的文字为注解,或“/”与“/”所包起来的文字为注解)
4.因此,如果在组合SQL的命令字符串时,未针对单引号字符作转义处理的话,将导致该字符变量在填入命令字符串时,被恶意窜改原本的SQL语法的作用。
一个简单的SQL注入:
使用工具 Postman 模拟登录场景
在密码输入框输入:
234215’ or 1=1
’ 单引号的作用是分割前面所有的数据单引号前面的数据可以随意填写
or 的意思是或 在MySQL中的作用就是进行判断条件为 True 或 Flase
条件有一方是正确的都执行而并不是要两边都是正确的
所以 or 后面的也可以是 True
当然以上所说的所有内容都是建立在没有针对SQL注入做预防措施的前提下