举个简单的SQL注入例子
对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样:
select name,[...] from t_user whereid=$id其中,$id就是前端提交的用户id,那前端的请求如果是这样:
GET xx/userinfo?id=1%20or%201=1请求参数id转义后就是1 or 1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:
select name,[...] from t_user whereid=1or1=1最终结果就是把用户表中的所有数据全部查出,已经达到了攻击者泄露数据的目的。
上面只是一个非常简单的注入示例,在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多,攻击者攻击的位置也复杂的多,不过原理是一致的。复杂度提升产生的攻击效果可想而知。
二、XSS 攻击
XSS全称是跨站脚本攻击(Cross Site Scripting),为了和重叠样式表CSS区分,换了另一个缩写XSS。
简单来说就是某饭店要进一批酸菜,张三在送货车快到饭店的时候,偷偷上车把原来的酸菜换成了“老坛酸菜”,随后老坛酸菜”被放入饭店仓库。此后只要有人来饭店吃酸菜鱼,就会被“美味”攻击,让用户毫不知情的踩坑