关于Web安全的理解

最近在学习web安全相关的一些知识,目前对web安全也只有了一些浅显的理解,下面记录我的一些理解。
因为对这一块懂的东西不是很多,有些地方可能写的不对或者不够全,所以欢迎大家给点问题和建议。

目前只看了三种攻击方式
一.XSS跨站脚本攻击
二.sql注入
三.CSRF跨站请求伪造

一.XSS跨站脚本攻击

反射型XSS攻击
此种攻击通俗点讲,就是在用户输入的地方,输入一些恶意的脚本,通常是textarea,然后通过某种方式立即执行,然后获取到一些想要得到的信息,比如cookie等,然后发送到自己的服务器。(没有想到具体哪些案例会立即执行)
此种攻击的解决方案一般是在用户输入的地方做一些过滤,过滤掉这一部分恶意脚本。
存储型XSS攻击
此种攻击通俗点讲,就是在用户输入的地方,输入一些恶意的脚本,通常是富文本编辑器或者textarea等地方,然后在读取富文本的时候,如果没有做过滤和限制,就会直接执行用户输入的恶意脚本。存储型说的就是数据会存储到服务器或者数据库。
此种攻击的解决方案和上面一样,在用户输入的地方做一些过滤,过滤掉这一部分恶意脚本。
dom型XSS攻击
dom型XSS攻击也是在用户输入的地方输入一些脚本,不同的是这个脚本可能直接就在客户端执行,不经过服务器。

xss攻击基本是在用户输入的地方输入一些恶意脚本,已达到以下的目的:

  1. 获取cookie等一些重要的信息
  2. 插入一些js或者css修改和破坏页面结构
  3. 执行某段js,使页面跳转到其他页面

基本的防御方法就是在用户输入的地方或者显示的地方:

  1. 过滤危险节点,如script,style,link,iframe等
  2. 过滤一些危险的属性,如href,src等
  3. 对cookie设置httpOnly

二.CSRF攻击

关于CSRF攻击的知识,我是看了这篇博客的Web安全之CSRF攻击,个人觉得这篇文章还不错,简单清晰明了。
我个人感觉CSRF攻击和XSS攻击有点类似,也是在用户输入的地方输入一些脚本,比如一个图片,在图片的src里加上某个地址,当页面再次载入这个输入的内容的时候,就会发送请求,从而达到某种目的。
CSRF攻击和xss有点类似,不一样的是,CSRF冒充用户在站内做一些正常的操作,如关注某个人等,而XSS则是获取一些信息,做一些恶意的操作等,其实具体的区别我也不是很理解,有机会的话再继续深入探究一下。
防御CSRF攻击的方法主要是:

  1. 修改数据的接口,尽量使用post请求
  2. 使用cookie同源策略

推荐的文章Web安全之CSRF攻击其实还讲了其他的几种方法,但是都没接触过,不太理解,所以没有写下来。

三.SQL注入

我之前写过一个获取微信小程序码的接口,该接口对外开放没有做任何限制,然后根据一些参数创建文件夹和文件名等信息,发现经常会有一些SELECT开头的文件夹和文件,SQL注入应该就是传入的参数里面带有SQL语句,后面我加了一些过滤和判断就没有出现过了。
防御的主要措施就是:

  1. 对用户输入的内容进行校验和过滤
  2. 不要动态拼接SQL语句
  3. 不要使用管理员权限连接数据库
  4. 敏感字段要进行MD5加密

相关推荐