关于Web安全的理解
最近在学习web安全相关的一些知识,目前对web安全也只有了一些浅显的理解,下面记录我的一些理解。
因为对这一块懂的东西不是很多,有些地方可能写的不对或者不够全,所以欢迎大家给点问题和建议。
目前只看了三种攻击方式
一.XSS跨站脚本攻击
二.sql注入
三.CSRF跨站请求伪造
一.XSS跨站脚本攻击
反射型XSS攻击
此种攻击通俗点讲,就是在用户输入的地方,输入一些恶意的脚本,通常是textarea,然后通过某种方式立即执行,然后获取到一些想要得到的信息,比如cookie等,然后发送到自己的服务器。(没有想到具体哪些案例会立即执行)
此种攻击的解决方案一般是在用户输入的地方做一些过滤,过滤掉这一部分恶意脚本。
存储型XSS攻击
此种攻击通俗点讲,就是在用户输入的地方,输入一些恶意的脚本,通常是富文本编辑器或者textarea等地方,然后在读取富文本的时候,如果没有做过滤和限制,就会直接执行用户输入的恶意脚本。存储型说的就是数据会存储到服务器或者数据库。
此种攻击的解决方案和上面一样,在用户输入的地方做一些过滤,过滤掉这一部分恶意脚本。
dom型XSS攻击
dom型XSS攻击也是在用户输入的地方输入一些脚本,不同的是这个脚本可能直接就在客户端执行,不经过服务器。
xss攻击基本是在用户输入的地方输入一些恶意脚本,已达到以下的目的:
- 获取cookie等一些重要的信息
- 插入一些js或者css修改和破坏页面结构
- 执行某段js,使页面跳转到其他页面
基本的防御方法就是在用户输入的地方或者显示的地方:
- 过滤危险节点,如script,style,link,iframe等
- 过滤一些危险的属性,如href,src等
- 对cookie设置httpOnly
二.CSRF攻击
关于CSRF攻击的知识,我是看了这篇博客的Web安全之CSRF攻击,个人觉得这篇文章还不错,简单清晰明了。
我个人感觉CSRF攻击和XSS攻击有点类似,也是在用户输入的地方输入一些脚本,比如一个图片,在图片的src里加上某个地址,当页面再次载入这个输入的内容的时候,就会发送请求,从而达到某种目的。
CSRF攻击和xss有点类似,不一样的是,CSRF冒充用户在站内做一些正常的操作,如关注某个人等,而XSS则是获取一些信息,做一些恶意的操作等,其实具体的区别我也不是很理解,有机会的话再继续深入探究一下。
防御CSRF攻击的方法主要是:
- 修改数据的接口,尽量使用post请求
- 使用cookie同源策略
推荐的文章Web安全之CSRF攻击其实还讲了其他的几种方法,但是都没接触过,不太理解,所以没有写下来。
三.SQL注入
我之前写过一个获取微信小程序码的接口,该接口对外开放没有做任何限制,然后根据一些参数创建文件夹和文件名等信息,发现经常会有一些SELECT开头的文件夹和文件,SQL注入应该就是传入的参数里面带有SQL语句,后面我加了一些过滤和判断就没有出现过了。
防御的主要措施就是:
- 对用户输入的内容进行校验和过滤
- 不要动态拼接SQL语句
- 不要使用管理员权限连接数据库
- 敏感字段要进行MD5加密