前端安全相关

news2025/2/24 15:31:25
  1. 请求后端接口必须带上sign

在这里插入图片描述
以上主要是解决:除了数据泄露外,一些重要功能的接口如果没有做好保护措施也会被恶意调用造成DDoS、条件竞争等攻击效果

一些营销活动类的Web页面,领红包、领券、投票、抽奖等活动方式很常见。此类活动对于普通用户来说应该是“拼手气”,而对于非正常用户来说,可以通过直接刷活动API接口的这种“作弊”方式来提升“手气”。这样对普通用户来说就很不公平

  1. 登录密码使用sha256加密后传给后端

首先我们先说一下为什么选择sha256,而不是Aes,md5:

sha256Aes
对称加密算法哈希算法
不可逆性可逆性
不需要存储密钥需要存储密钥

对密码进行加密时,通常使用哈希函数而不是对称加密算法。因此,对密码进行加密选择SHA-256这样的哈希算法更为常见和推荐。这是因为哈希算法是单向的(不可逆),而对称加密算法是可逆的。

安全性比较:

AES加密:安全性主要依赖于密钥的保密性和密钥长度。较长的密钥长度提供更高的安全性。目前,AES-256被认为是非常安全的。

SHA-256哈希:SHA-256是一个强大的哈希算法,提供较高的抗碰撞性,即相同的哈希值几乎不可能由不同的输入产生。然而,哈希碰撞攻击的发展可能对其安全性产生一定影响。

MD5:是一种哈希函数,它生成128位(16字节)的散列值,通常以32个十六进制数字的形式表示。MD5 曾经是广泛使用的哈希算法,但由于其存在碰撞(collision)漏洞和对抗性较弱,已经不再被推荐用于安全性要求较高的场景。

前端目前主要用crypto-js来实现加解密:

Crypto-JS是一个纯JavaScript编写的密码学库,提供了许多常见的加密算法,如AES、DES、Triple DES、Rabbit、MD5、SHA-1、SHA-256等。它的目标是在浏览器中提供安全的加密算法实现。

以下是Crypto-JS的一些主要特点和用法:

  1. 多种算法支持: Crypto-JS支持多种对称和哈希算法,使其成为一个全面的密码学工具库。

  2. 简单易用: 它提供了简单易用的API,使得在JavaScript中使用密码学算法变得相对容易。这对于在浏览器中进行客户端加密或在Node.js环境中进行服务器端加密都很有用。

  3. 模块化: Crypto-JS采用模块化设计,你可以选择性地只引入需要的模块,减小库的体积。

  4. 与标准兼容: 它的API设计与Web Crypto API标准相似,这使得在各种环境下进行加密操作更加一致。

  5. 容易集成: 由于是纯JavaScript实现,可以轻松地在浏览器中嵌入,也可以在Node.js环境中使用。

以下是一个简单的Crypto-JS使用示例,演示了在浏览器中使用AES加密:

// 引入 CryptoJS 库
var CryptoJS = require("crypto-js");

// 定义密钥和明文
var key = CryptoJS.enc.Utf8.parse("1234567890123456");
var plaintext = CryptoJS.enc.Utf8.parse("Hello, Crypto-JS!");

// 进行 AES 加密
var ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});

// 输出加密后的结果
console.log("Ciphertext: " + ciphertext.toString());
  1. vue.config.js中配置防爬虫文件

	{
	   from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
	   to: './' //到根目录下
	}

虽然这样能防止爬取,但我们的代码还是能被调试,接下来我们要防止调试:

  1. 禁用开发者工具

监听是否打开开发者工具,若打开,则直接调用JavaScript的window.close( )方法关闭网页

① 监听F12按键、监听Ctrl+Shift+I(Windows系统)组合键、监听右键菜单,监听Ctrl+s禁止保存至本地,避免被Overrides。


<script>
 
    //监听F12、Ctrl+Shift+i、Ctrl+s
    document.onkeydown = function (event) {
        if (event.key === "F12") {
            window.close();
            window.location = "about:blank";
        } else if (event.ctrlKey && event.shiftKey && event.key === "I") {//此处I必须大写
            window.close();
            window.location = "about:blank";
        } else if (event.ctrlKey && event.key === "s") {//此处s必须小写
            event.preventDefault();
            window.close();
            window.location = "about:blank";
        }
 
    };
 
    //监听右键菜单
    document.oncontextmenu = function () {
        window.close();
        window.location = "about:blank";
    };
</script>

② 监听窗口大小变化


<script>
 
    var h = window.innerHeight, w = window.innerWidth;
    window.onresize = function () {
        if (h !== window.innerHeight || w !== window.innerWidth) {
            window.close();
            window.location = "about:blank";
        }
    }
</script>

③ 利用Console.log

<script>
 
    //控制台打开的时候回调方法
    function consoleOpenCallback(){
        window.close();
        window.location = "about:blank";
        return "";
    }
 
    //立即运行函数,用来检测控制台是否打开
    !function () {
        // 创建一个对象
        let foo = /./;
        // 将其打印到控制台上,实际上是一个指针
        console.log(foo);
        // 要在第一次打印完之后再重写toString方法
        foo.toString = consoleOpenCallback;
    }()
</script>

无限debugger反调试


<script>
 
    function consoleOpenCallback() {
        window.close();
        window.location = "about:blank";
    }
 
    setInterval(function () {
        const before = new Date();
        (function(){}).constructor("debugger")();
        // debugger;
        const after = new Date();
        const cost = after.getTime() - before.getTime();
        if (cost > 100) {
            consoleOpenCallback();
        }
    }, 1000);
</script>

好了,今天就分享到这了,觉得博主写的有帮助的麻烦点个赞!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391533.html

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

相关文章

Linux miniGUI移植分析

框架介绍 常用GUI程序对比 https://www.cnblogs.com/zyly/p/17378659.html MiniGUI分为底层的GAL&#xff08;图形抽象层&#xff09;和IAL&#xff08;输入抽象层&#xff09;&#xff0c;向上为基于标准POSIX接口中pthread库的Mini-Thread架构和基于Server/Client的Mini-L…

WebGL中开发AR应用

WebGL在本质上是用于在浏览器中进行3D和2D图形渲染的技术&#xff0c;而增强现实&#xff08;AR&#xff09;通常需要与现实世界的环境进行交互。要在WebGL中开发AR应用&#xff0c;您可以采取以下步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专…

固定拍摄点位下的NeRF技术应用(算法探讨)

NeRF&#xff08;神经辐射场&#xff09;技术可以用于物体定位。NeRF 是一种深度学习方法&#xff0c;它通过对场景的大量照片进行训练来创建三维场景的高度逼真的渲染。这项技术能够从多个角度捕捉场景的细节&#xff0c;并通过神经网络理解场景的三维结构。 使用 NeRF 进行物…

容器部署的nextcloud配置onlyoffice时开启密钥

容器部署的nextcloud配置onlyoffice时开启密钥 配置 进入onlyoffice容器 docker exec -it 容器id bash编辑配置vi /etc/onlyoffice/documentserver/local.json enable设置为true&#xff0c;并配置secret 重启容器&#xff0c;并将配置的密钥填入nextcloud密钥页面 docker r…

协方差矩阵自适应调整的进化策略(CMA-ES)

关于CMA-ES&#xff0c;其中 CMA 为协方差矩阵自适应(Covariance Matrix Adaptation)&#xff0c;而进化策略&#xff08;Evolution strategies, ES&#xff09;是一种无梯度随机优化算法。CMA-ES 是一种随机或随机化方法&#xff0c;用于非线性、非凸函数的实参数&#xff08;…

【每日小bug】mybatis plus id注解错误导致的问题

插入数据 id不为自增 指定了主键&#xff0c;没有指定自增。会导致出现 修改如上 报错 Data truncation: Out of range value for column ‘id’ at row 1 数据库是bigint&#xff0c;java中是Integer。 修改如上

现代工程科技杂志现代工程科技杂志社现代工程科技编辑部2023年第21期目录

能源科技 配网故障停电原因及改进对策研究 上官安琪 110kV变电站电气自动化技术及应用策略 陈祥 变电运维误操作事故预控措施分析 高翔;韦婉 智能变电站变电运维安全与设备维护探究 温亮亮;覃万全 110kV变电站电气设计及其防雷保护案例研析 谢旭平 变电运维…

springboot-简单测试 前端上传Excel表格后端解析数据

导入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxm…

力扣白嫖日记(sql)

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 610.判断三角形 表&#xff1a;Triangle 列名类型xintyintzint 在sql中&#xff0c;(x,y,z)是该表的主键列…

微信小程序---如何创建分包

1.在项目根目录中&#xff0c;创建分包的根目录&#xff0c;名为subpkg&#xff0c;这个名字可以自己定义 2.在 pages.json 中&#xff0c;和 pages 节点平级的位置声明 subPackages 节点&#xff0c;用来定义分包相关的结构&#xff1a; 3.在分包目录&#xff0c;点击右键新建…

变革在即:为什么您现在就需要将大型语言模型融入系统与产品开发

“有些问题看起来易于构想和展示原型&#xff0c;但将其发展成实际产品却极为艰难。比如自动驾驶&#xff1a;展示一辆汽车在街区自动行驶很简单&#xff0c;但要把这一技术转化为成熟的产品却需要十年时间。” - Karpathy 本文旨在探讨如何将大语言模型&#xff08;LLMs&#…

新能源汽车智慧充电桩方案:如何实现充电停车智慧化管理?

一、方案概述 基于新能源汽车充电桩的监管运营等需求&#xff0c;安徽旭帆科技携手合作伙伴触角云共同打造“智能充电设备&#xff0b;云平台&#xff0b;APP小程序”一体化完整的解决方案&#xff0c;为充电桩车位场所提供精细化管理车位的解决办法&#xff0c;解决燃油车恶意…

全面了解网络性能监测:从哪些方面进行监测?

目录 摘要 引言 CPU内存监控 磁盘监控 网络监控 GPU监控 帧率监控 总结 摘要 本文介绍了网络性能监测的重要性&#xff0c;并详细介绍了一款名为克魔助手的应用开发工具&#xff0c;该工具提供了丰富的性能监控功能&#xff0c;包括CPU、内存、磁盘、网络等指标的实时监…

布局数字隔离器件领域,世强硬创获中科格励微授权代理

近年来&#xff0c;因数字隔离器件传输速度更强、绝缘性能更强、可靠性更好等特点&#xff0c;正在快速替代光耦器件。 为推动国内数字隔离器产品终端应用&#xff0c;实现不同层次需求的国产替代&#xff0c;世强先进&#xff08;深圳&#xff09;科技股份有限公司&#xff0…

Android 布局菜鸟 android中的布局类型和特点?

一、LinearLayout(线性布局) 1、 特点: 主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。 2、适⽤场景: Android开发中最常见的 ⼀种布局⽅式,排列…

新能源汽车智慧充电桩解决方案:智慧化综合管理与数字化高效运营

一、方案概述 TSINGSEE青犀&触角云新能源汽车智慧充电桩解决方案基于管理运营平台&#xff0c;覆盖业务与应用、数据传输与梳理、多端开发、搭建等模块&#xff0c;融合AI、5G、Wi-Fi 、移动支付等技术&#xff0c;实现充电基础设施由数字化向智能化演进&#xff0c;通过构…

SAP产品各版本简介

一、SAP名词解释 SAP Business Suite 当前SAP公司的主力产品包&#xff0c;里面包含了mySAP ERP, mySAP CRM, mySAP SCM …. 几乎是SAP的所有东东。如果购买的是此种许可证&#xff0c;就意味着几乎可以用SAP的所有产品的功能&#xff0d;&#xff0d;某些特定行业的特定引擎…

DataXCloud部署与配置[智数通]

静态IP设置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.130 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…

2024年第二届“华数杯”国际大学生数学建模竞赛 (B题 ICM)| 光伏发电分析 |数学建模完整代码+建模过程全解全析

光伏发电是一种重要的可再生能源。将太阳能转化为电力可以减少对传统能源的依赖,具有显著的环保和可持续发展优势。全球范围内,光伏发电正在迅速发展。目前,许多国家将光伏发电作为推动清洁能源转型的重要手段。这些国家在政策支持、技术创新和市场发展方面增加了对光伏发电的投…

Autosar DEM模块

文章目录 功能说明故障处理过程DEM 功能模块关系图操作循环诊断事件故障上报事件优先级事件发生计数器诊断事件的分类事件故障内存1、主要故障内存2、用户自定义故障内存3、永久故障内存故障内存结构 事件独立性故障码事件状态事件清除事件替换Debounce 防抖机制故障数据存储1、…