前端网络安全分析

前端常见的网络安全包括: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.mzph.cn/bicheng/62415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】-学习笔记06

第二章、时间同步服务器 2.1时间同步服务器的使用 2.1.1系统时区时间的管理 timedatectl set-time "2024-02-13 10:41:55" ##设定系统时间 timedatectl list-timezones ##显示系统的所有时区 timedatectl set-timezone "Asia/Shangh…

UE5_建立自己的资产库

资产库需要用到一个插件&#xff1a; UAsset Browser - 直接在当前项目预览其他UE项目资产&#xff08;.uasset 文件&#xff09; - 直接迁移其他UE项目资产到当前项目 - 不用另外打开资产项目查看资产&#xff0c;迁移资产&#xff08;麻烦&#xff09; 插件官网插件文档插…

macOS 桌面悬浮窗口

开发一个 macOS 桌面悬浮窗口(类似悬浮工具条、任务管理器等)可以使用 macOS 的 AppKit 框架,通过配置窗口属性,使窗口始终显示在其他应用窗口的上方。以下是开发的详细步骤: 关键点 窗口类型 使用 NSWindow 创建悬浮窗口。将窗口设置为浮动窗口,使其始终显示在其他窗口上…

GitLab/GitHub 多环境配置SSH密钥

需求&#xff1a; 代码有多个仓库&#xff0c;需要配置不同的密钥。 生成密钥&#xff08;有的可以跳过&#xff09; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" -f ~/.ssh/id_rsa_custom_name-t rsa 指定使用 RSA 算法。-b 4096 指定密钥长度为 4096 位…

力扣整理版十:动态规划(待更新)

动态规划&#xff1a;每一个状态由上一个状态推导出来。 --------------------------- (1) 509 斐波那契数 (2) 70 爬楼梯 (3) 746 使用最小花费爬楼梯 --------------------------- 一、基础题目 1、509 斐波那契数 509. 斐波那契数 - 力扣&#xff08;LeetCode&#…

黑马2024AI+JavaWeb开发入门Day02-JS-VUE飞书作业

视频地址&#xff1a;哔哩哔哩 讲义作业飞书地址&#xff1a;飞书 一、作业1 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…

详解登录MySQL时出现SSL connection error: unknown error number错误

目录 登录MySQL时出错SSL connection error: unknown error number 出错原因 使用MySQL自带的工具登录MySQL 登陆之后&#xff0c;使用如下命令进行查看 解决方法 找到MySQL8安装目录下的my.ini配置文件 记事本打开my.ini文件&#xff0c;然后按下图所示添加配置 此时再…

深度学习基本单元结构与输入输出维度解析

深度学习基本单元结构与输入输出维度解析 在深度学习领域&#xff0c;模型的设计和结构是理解其性能和应用的关键。本文将介绍深度学习中的基本单元结构&#xff0c;包括卷积神经网络&#xff08;CNN&#xff09;、反卷积&#xff08;转置卷积&#xff09;、循环神经网络&…

Sofia-SIP 使用教程

Sofia-SIP 是一个开源的 SIP 协议栈&#xff0c;广泛用于 VoIP 和即时通讯应用。以下是一些基本的使用教程&#xff0c;帮助你快速上手 Sofia-SIP。 1. 安装 Sofia-SIP 首先&#xff0c;你需要安装 Sofia-SIP 库。你可以从其官方 GitHub 仓库克隆源代码并编译安装&#xff1a…

【八股文】小米

文章目录 一、vector 和 list 的区别&#xff1f;二、include 双引号和尖括号的区别&#xff1f;三、set 的底层数据结构&#xff1f;四、set 和 multiset 的区别&#xff1f;五、map 和 unordered_map 的区别&#xff1f;六、虚函数和纯虚函数的区别&#xff1f;七、extern C …

【leetcode100】找到字符串中所有字母异位词

1、题目描述 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "…

乐鑫发布 esp-iot-solution v2.0 版本

今天&#xff0c;乐鑫很高兴地宣布&#xff0c;esp-iot-solution v2.0 版本已经发布&#xff0c;release/v2.0 分支下的正式版本组件将为用户提供为期两年的 Bugfix 维护&#xff08;直到 2027.01.25 ESP-IDF v5.3 EOL&#xff09;。该版本将物联网开发中常用的功能进行了分类整…

c/c++ 用easyx图形库写一个射击游戏

#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…

面经-综合面/hr面

面经-综合面/hr面 概述1.大学期间遇到的困难&#xff0c;怎么解决的2. 大学期间印象最深/最难忘的是什么3. 大学里面担任了什么职务没&#xff1f;做了什么工作&#xff1f;4. 大学最大的遗憾是什么&#xff1f;5. 对自己的未来规划6. 对自己的评价7. 自己的优缺点8. 对公司的认…

pyspark实现基于协同过滤的电影推荐系统

最近在学一门大数据的课&#xff0c;课程要求很开放&#xff0c;任意做一个大数据相关的项目即可&#xff0c;不知道为什么我就想到推荐算法&#xff0c;一直到着手要做之前还没有新的更好的来代替&#xff0c;那就这个吧。 推荐算法 推荐算法的发展由来已久&#xff0c;但和…

虚拟现实(VR)与增强现实(AR)有什么区别?

虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;与增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;在多个方面存在显著差异。以下是对这两者的详细比较&#xff1a; 一、概念定义 虚拟现实&#xff08;VR&#xff09;&#xff1a; 是一种…

【图像去噪】论文精读:Deep Image Prior(DIP)

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1. Introduction2. Method3…

十、Spring Boot集成Spring Security之HTTP请求授权

文章目录 往期回顾&#xff1a;Spring Boot集成Spring Security专栏及各章节快捷入口前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置 三、测试接口1、测试类2、测试 四、总结 往期回顾…

Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)

前言 Unity3d实现的数字沙盘系统中&#xff0c;总有一些图片或者图片列表需要点击后弹窗显示大图&#xff0c;这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦&#xff0c;所以&#xff0c;需要图片能够根据容器的大小自适应地进行缩放&#xff0c;兼容不太尺寸下的横竖图…

用 llama.cpp 体验 Meta 的 Llama AI 模型

继续体验 Meta 开源的 Llama 模型&#xff0c;前篇 试用 Llama-3.1-8B-Instruct AI 模型 直接用 Python 的 Tranformers 和 PyTorch 库加载 Llama 模型进行推理。模型训练出来的精度是 float32, 加载时采用的精度是 torch.bfloat16。 注&#xff1a;数据类型 torch.float32, t…