当前位置: 首页 > article >正文

前端网络安全分析

前端常见的网络安全包括:xss(跨站脚本攻击)、csrf(跨站请求伪造)、sql注入攻击等。

1)跨站脚本攻击(xss)

原理:

攻击者往web页面中注入恶意 script 代码(或者在url的查询参数中注入 script 代码),当用户浏览访问时,嵌入的 script 代码就会执行,造成危害。

反射型xss:用户点击攻击连接,服务器解析后响应,在返回的内容中包含xss的恶意攻击脚本,被浏览器执行。一般通过发送恶意url,让用户点击达到目的;

持久型xss:web server 保存了恶意 xss 脚本,每一个访问的用户都被攻击。一般通过博客、论坛等可以动态录入内容的途径,达到攻击的目的;

防御:

对用户的输入内容进行过滤,对输出在网页上的内容进行转译或编码。

常见的过滤 xss 三大技术:过滤(<script><a><img>,有的删除其中的内容,有的过滤掉on事件和javascript字符串)、编码(常见字符如“<”“>”进行编码或转译)、限制(限制url的长度)。

2、跨站请求伪造(csrf)

原理:

用户打开A网站,输入用户名和密码进行登录,获得A网站的访问权限。此时不关闭浏览器,另开一个tab页访问B网站(恶意网站),B网站收到请求后,返回一些攻击性的代码,发请求访问A网站,由于操作用户本身具有A网站的访问权限,因此就能达到攻击的目的。

防御:

验证 http 的 Referrer 字段,确认访问来源;

在请求地址中添加 token,并进行验证;

在 http 头中自定义属性并进行验证(例如:XMLHttpRequest 中可以加入 csrfToken 属性)

3、sql 注入攻击

原理:

把 sql 命令插入 web 表单进行提交,或通过查询字符串进行提交,达到欺骗服务器,到后台执行恶意 sql 脚本的目的。

防御:

后台 sql 语句的执行用查询参数代替,例如:preparedStatement,动态的内容用?代替;

4、其它安全性

1)可以禁止 js 脚本访问 cookie。cookie 属性设置中,加入 httpOnly,然后就无法通过脚本获取 cookie 信息了;

2)可以升级 cookie 的传输协议。cookie 属性设置中,加入 secure,就会强制浏览器以 https 形式传递 cookie 到服务器;

3)X-Frame-Options。在 header 中添加了这个以后,那么用户将无法在 <iframe src=''> 中访问该网站。有三个级别(deny、sameorgin、allow from url);

4)启用内容安全策略 CSP。这个也需要在 header 中添加这个属性,添加后用来防御一定程度的“跨站脚本攻击”和“数据注入攻击”;

5)服务端和客户端的混合渲染,也容易被攻击,好的方式是:进行编码转译或严格过滤;

6)http 本身存在安全问题,例如:消息的明文发送、缺乏对消息完整性的验证;

7)目前针对 express 和 koa 有一个叫 helmet 的 npm 包,可以一次性设置很多的属性,来解决各类攻击问题,值得尝试。网址如下:

https://github.com/helmetjs/helmet

5、三大框架的安全性策略

主流的前端框架都实现了对 xss 的防御,结合服务端的 token 机制,更加可以防御 csrf。例如:vue.js 将所有动态输入的内容都渲染为纯文本,需要显示脚本的用v-html 进行显示。当然,vue 官方仍然建议不要将 v-html 用在动态提交的内容上,尽量避免例如原始 html 和使用 v-pre(跳过编译过程)。


http://www.kler.cn/a/415270.html

相关文章:

  • 添加字符(暴力模拟)
  • 中科亿海微SoM模组——波控处理软硬一体解决方案
  • python基础(二)
  • Vue.js当中v-if和v-show的区别
  • Android获取内置卡、内置U盘和挂载U盘路径和内存大小
  • React 前端框架深度剖析
  • 知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 开源项目:纯Python构建的中后台管理系统
  • 解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法
  • 【sqlcipher】pc端sqflite使用过程中遇到的问题
  • 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言
  • 【青牛科技】电动工具电流反馈型相位控制电路D2010
  • 传输控制协议(TCP)
  • 计算机网络:IP协议详细讲解
  • Hot100 - 搜索二维矩阵II
  • Unity的GPU Instancing技术
  • 智能驾驶,车联网,传感器,车载电子集中展示|2025北京自动驾驶展
  • 欧科云链研究院:比特币还能“燃”多久?
  • 【vue-router】Vue-router如何实现路由懒加载
  • Spring Boot 3.x 多环境配置详解
  • vscode、android studio、vim 国产AI编程插件Fitten Code
  • nVisual可视化资源管理工具
  • com.alibaba.fastjson.JSONException: not close json text, token : error
  • HTTPS 的应用数据是如何保证完整性的?
  • 玩转 uni-app 静态资源 static 目录的条件编译