2

最近在学习web安全相关的一些知识,目前对web安全也只有了一些浅显的理解,下面记录我的一些理解。

常见的攻击方式如下:

  • xss攻击
  • csrf攻击
  • sql注入

xss攻击和防范

反射型XSS攻击

  • 说明

此种攻击通俗点讲,就是在用户输入的地方,输入一些恶意的脚本,如搜索框等,输入

<script>alert('handsome boy')</script>

这些脚本在输入之后,一般会立即在当前页面执行,从而达到某种目的

  • 防范

直接输出用户输入的结果的时候,可以使用escape的方法对用户输入的内容进行转换

存储型XSS攻击

  • 说明

和反射型类似,也是在用户输入的地方,一般是富文本,输入一些脚本,如:

<script>alert('handsome boy')</script>

这些富文本一般是要显示在页面上的
这些脚本一般不会立即执行,而是用户保存之后,存储在服务器上,当别的用户访问的时候,如果不进行一些处理,就会直接执行,达到某种目的,如让用户自动关注点赞等。

  • 防范

可以在需要直接显示html的地方做一些过滤显示

CSRF攻击

  • 说明

csrf也称跨站伪造请求,就是对网站发起一些恶意的伪造的请求

  • 防范

    • 一般框架会内置一些方法,如在前端的form表单里加上内置的渲染csrf_token的方法,页面在渲染的时候会自动渲染一个hidden的input,表单在提交的时候,带上这个渲染的csrf_token,这样才会被认为是安全的请求:django可以在form表单里加上:{% csrf_token %}; eggjs可以在form标签的属性里加上action\="/upload?\_csrf={{ ctx.csrf | safe }}" enctype\="multipart/form-data"
    • 将csrf_token设置在cookie中,在提交请求的时候,在header或者body里带上cookie中的token

SQL注入

  • 说明

一般来说,出现这种攻击的原因就是,直接根据用户的输入,来进行sql语句拼接,从而导致出现执行了一些不想执行的sql语句。

  • 防范

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

上帝遗忘之子
60 声望5 粉丝

全栈,运维