网络安全:SQL注入,XSS攻击,CSRF攻击

- 网络安全
- SQL注入
- XSS攻击
- CSRF攻击
- DDoS攻击
- DNS劫持
- TCP劫持
- 端口扫描技术
1、SQL注入Web安全三板斧之首 , 大名鼎鼎的SQL注入 。

网络安全:SQL注入,XSS攻击,CSRF攻击

文章插图
 
SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句 , 以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作 , 达到其邪恶的目的 。
而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器 , 后端服务器如果未做输入安全校验 , 直接将变量取出进行数据库查询 , 则极易中招 。
网络安全:SQL注入,XSS攻击,CSRF攻击

文章插图
 
举例如下:
对于一个根据用户ID获取用户信息的接口 , 后端的SQL语句一般是这样:
select name,[...] from t_user where id=$id其中 , $id就是前端提交的用户id , 而如果前端的请求是这样:
GET xx/userinfo?id=1%20or%201=1其中请求参数id转义后就是1 or 1=1 , 如果后端不做安全过滤直接提交数据库查询 , SQL语句就变成了:
select name,[...] from t_user where id=1 or 1=1其结果是把用户表中的所有数据全部查出 , 达到了黑客泄露数据的目的 。
以上只是一个极简单的示例 , 在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多 , 不过原理是一致的 。
网络安全:SQL注入,XSS攻击,CSRF攻击

文章插图
【网络安全:SQL注入,XSS攻击,CSRF攻击】 
要解决 SQL 注入就不能让用户输入的数据(如:密码)和我们的 SQL 语句进行简单的字符串拼接 。${} 的作用实际上是字符串拼接 , 所以要特别小心sql注入问题 。
#{}用到了prepareStement , 它将 SQL 语句发送给数据库预编译 , 安全性更高 , 没有 SQL 注入的隐患 , 减少 SQL 编译次数 , 提高效率 。
#{}将传入的数据都当成一个字符串 , 会对自动传入的数据加一个双引号 。而${}将传入的数据直接显示生成在sql中 。
防御手段:对输入进行检测 , 阻断带有SQL语句特征的输入 。
重点关注:前端工程师、Web后端工程师
2、XSS攻击Web安全三板斧之二 , 全称跨站脚本攻击(Cross Site Scripting) , 为了与重叠样式表css区分 , 换了另一个缩写XSS 。
网络安全:SQL注入,XSS攻击,CSRF攻击

文章插图
 
XSS攻击的核心是将可执行的前端脚本代码(一般为JAVAScript)植入到网页中 , 听起来比较拗口 , 用大白话说就是攻击者想让你的浏览器执行他写的JS代码 。那如何办到呢?一般XSS分为两种:
1)、反射型
网络安全:SQL注入,XSS攻击,CSRF攻击

文章插图
 
1、攻击者将JS代码作为请求参数放置URL中 , 诱导用户点击 示例:
http://localhost:8080/test?name=<script>alert("you are under attack!")</script>2、用户点击后 , 该JS作为请求参数传给Web服务器后端
3、后端服务器没有检查过滤 , 简单处理后放入网页正文中返回给浏览器
4、浏览器解析返回的网页 , 中招!
2)、存储型
网络安全:SQL注入,XSS攻击,CSRF攻击


推荐阅读