前端安全相关

这篇具有很好参考价值的文章主要介绍了前端安全相关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 请求后端接口必须带上sign

前端安全相关,前端,安全
以上主要是解决:除了数据泄露外,一些重要功能的接口如果没有做好保护措施也会被恶意调用造成DDoS、条件竞争等攻击效果

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

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

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

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

对密码进行加密时,通常使用哈希函数而不是对称加密算法。因此,对密码进行加密选择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>

好了,今天就分享到这了,觉得博主写的有帮助的麻烦点个赞!!!文章来源地址https://www.toymoban.com/news/detail-804460.html

到了这里,关于前端安全相关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端面试相关

    HTML5 新特征 ✅ HTML5 与es6 新特性 cookie 与 sessionStorage 和 localStorage 的区别 ✅Cookie 和localStorage、SessionStorage 区别 事件冒泡和事件捕获 ✅ 事件捕获和事件冒泡 垂直居中 DIV ✅ 元素垂直水平居中的多种办法(块级 行内元素) 两栏布局左边固定右边自适应 ✅ 两栏布局,左边

    2024年02月10日
    浏览(26)
  • 2023年最新前端面试题(小程序相关)

    一、小程序 tabbar的限制(配置参数) 修改项目根目录中的 app.json 配置文件,与pages平级的位置新增 tabBar 的配置节点如下: \\\"tabBar\\\": { \\\"selectedColor\\\": \\\"#C00000\\\", \\\"list\\\": [ { \\\"pagePath\\\": \\\"pages/home/home\\\", \\\"text\\\": \\\"首页\\\", \\\"iconPath\\\": \\\"static/tab_icons/home.png\\\", \\\"selectedIconPath\\\": \\\"static/tab_icons/home-active.png\\\"

    2024年02月07日
    浏览(31)
  • Nginx 常用的基础配置(前端相关方面)

    目录 基础配置 隐藏 Nginx 版本信息 禁止ip直接访问80端口 启动 web 服务 (vue 项目为例) PC端和移动端使用不同的项目文件映射 一个web服务,配置多个项目 (location 匹配路由区别) 配置负载均衡 SSL 配置 HTTPS         最近很多朋友问到Nginx配置前端 web 服务,所以特地写了这篇文

    2024年01月21日
    浏览(28)
  • 前端PWA应用的相关知识和基础Demo

    一、什么是PWA应用? 1、PWA简介 ​ 渐进式Web应用(Progressive Web App),简称 PWA ,是 Google 在 2015 年提出的一种使用web平台技术构建的应用程序,官方认为其核心在于 Reliable (可靠的)、 Fast (快速的)、 Engaging (可参与的),结合了web网站程序和原生应用程序两者的优点,

    2024年02月21日
    浏览(31)
  • CSS样式前端HTML页面常用CSS效果实现及其相关配置信息------前端入门基础教程

    !DOCTYPE html !-- 这是HTML的注释 -- html lang=\\\"en\\\" id=\\\"myHtml\\\"     head         !-- 这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码 --         meta charset=\\\"UTF-8\\\"         meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"         titleHtmlAll/title         

    2024年02月05日
    浏览(38)
  • 前端JS代码中Object类型数据的相关知识

    获取Object类型数据的方式有两种: 方括号获取: Object[\\\"arg1\\\"] 点·获取: Object.arg1 前端遍历Object类型数据的方式 遍历JavaScript中的对象有几种方法,包括使用for…in循环、Object.keys()方法、Object.values()方法和Object.entries()方法。以下是每种方法的示例代码: Object对象中的日期类型

    2024年01月20日
    浏览(51)
  • 深入理解前端字节二进制知识以及相关API

    当前,前端对二进制数据有许多的API可以使用,这丰富了前端对文件数据的处理能力,有了这些能力,就能够对图片等文件的数据进行各种处理。 本文将着重介绍一些前端二进制数据处理相关的API知识,如Blob、File、FileReader、ArrayBuffer、TypeArray、DataView等等。 在介绍各种API之

    2024年02月03日
    浏览(33)
  • 前端同步异步讲解--Ajax(axios进阶)的相关操作

    之前我们讲到了数据在前后端传输是依赖xml文件,但是由于时代变迁,他也已经比逐步淘汰,json对象就逐步开始作为数据传输通道的桥梁,忘记的话可以去回顾文章对应的json对象 最全的前端知识之css与jsp介绍-CSDN博客 文章浏览阅读1k次,点赞31次,收藏21次。ok了,宝子们,

    2024年02月21日
    浏览(34)
  • 搭建新项目 前端环境 及启动项目前的相关配置

    ** ** 提示:这里可以添加本文要记录的大概内容: 搭建新项目 前端环境 下图所示为开发时前端所用的编辑器 提示:以下是本篇文章正文内容,下面案例可供参考 注意:在配置时 有时候 localhost 可能 不太好用,所以我们 最好配置 成 127.0.0.1 指向我们的电脑 代码如下(示例

    2024年01月23日
    浏览(36)
  • 前端 | ( 十)HTML5简介及相关新增属性 | 尚硅谷前端html+css零基础教程2023最新

    学习来源 :尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频 系列笔记 : 【HTML4】(一)前端简介 【HTML4】(二)各种各样的常用标签 【HTML4】(三)表单及HTML4收尾 【CSS2】(四)CSS基础及CSS选择器 【CSS2】(五)CSS三大特性及常用属性 【CSS2】(六)CSS盒子模型

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包