什么是SQL注入攻击
假设一个网站依托于一个数据库而建立,而这个网站并没有对SQL注入攻击进行一些有效的防护措施
那么当用户访问网站并对网站发出一些请求时,网站为了向用户返回有效的数据,就会对自己网站下的数据库进行CRUD操作
假设name是用户提交来的数据
String name = "盖伦"
本来网站拿着这个name去查询自己的数据库的话,就只会查到一条或者很少一部分数据,也就只会返回这一部分数据
但是如果在这个数据之后添加一条OR 1=1的话,服务器拼接出来的SQL语句就有可能为
SELECT * FROM hero WHERE name = '盖伦' OR 1=1
因为1=1是恒成立,所以这里就会把所有的数据都查询出来
而如果这个网站的数据库存储的数据是海量的,特别庞大,几百万甚至几千万条,服务器就会把这些数据全部查询出来并且返回或者进行下一步的处理
这时,就会极大的占用服务器的CPU和内存,让服务器负载变得极高甚至%100
此时当有别的用户访问网站或发出请求时,服务器就会进入无响应的状态