前端高级面试题-安全相关
1 XSS
跨⽹站指令码(英语: Cross-site scripting ,通常简称为: XSS )是⼀种⽹站应⽤程式的安全漏洞攻击,是代码注⼊的⼀种。
它允许恶意使⽤者将程式码注⼊到⽹⻚上,其他使⽤者在观看⽹⻚时就会受到影响。这类攻击通常包含了 HTML 以及使⽤者端脚
本语⾔
XSS 分为三种:反射型,存储型和 DOM-based
如何攻击
- XSS 通过修改 HTML 节点或者执⾏ JS 代码来攻击⽹站。
- 例如通过 URL 获取某些参数
<!-- http://www.domain.com?name=<script>alert(1)</script> -->
<div>{{name}}</div>
上述 URL 输⼊可能会将 HTML 改为 <div><script>alert(1)</script></div> ,这样⻚⾯中就凭空多了⼀段可执⾏脚本。这种攻
击类型是反射型攻击,也可以说是 DOM-based 攻击
如何防御
最普遍的做法是转义输⼊输出的内容,对于引号,尖括号,斜杠进⾏转义
function escape(str) {
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
str = str.replace(/"/g, "&quto;");
str = str.replace(/'/g, "&##39;");
str = str.replace(/`/g, "&##96;");
str = str.replace(/\//g, "&##x2F;");
return str
}
通过转义可以将攻击代码 <script>alert(1)</script> 变成
// -> <script>alert(1)<&##x2F;script>
escape('<script>alert(1)</script>')
对于显示富⽂本来说,不能通过上⾯的办法来转义所有字符,因为这样会把需要的格式也过滤掉。这种情况通常采⽤⽩名单过滤的办法
,当然也可以通过⿊名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使⽤⽩名单的⽅式
var xss = require("xss");
var html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>'
// -> <h1>XSS Demo</h1><script>alert("xss");</script>
console.log(html);
以上示例使⽤了 js-xss 来实现。可以看到在输出中保留了 h1 标签且过滤了 script 标签
2 CSRF
跨站请求伪造(英语: Cross-site request forgery ),也被称为 one-click attack 或者 session riding ,通常缩写为CSRF 或者 XSRF ,是⼀种挟制⽤户在当前已登录的 Web 应⽤程序上执⾏⾮本意的操作的攻击⽅法CSRF 就是利⽤⽤户的登录态发起恶意请求
如何攻击
假设⽹站中有⼀个通过 Get 请求提交⽤户评论的接⼝,那么攻击者就可以在钓⻥⽹站中加⼊⼀个图⽚,图⽚的地址就是评论接⼝
<img src="http://www.domain.com/xxx?comment='attack'"/>
如何防御
- Get 请求不对数据进⾏修改
- 不让第三⽅⽹站访问到⽤户 Cookie
- 阻⽌第三⽅⽹站请求接⼝
- 请求时附带验证信息,⽐如验证码或者 token
3 密码安全
加盐
对于密码存储来说,必然是不能明⽂存储在数据库中的,否则⼀旦数据库泄露,会对⽤户造成很⼤的损失。并且不建议只对密码单纯
通过加密算法加密,因为存在彩虹表的关系
- 通常需要对密码加盐,然后进⾏⼏次不同加密算法的加密
// 加盐也就是给原密码添加字符串,增加原密码⻓度
sha256(sha1(md5(salt + password + salt)))
但是加盐并不能阻⽌别⼈盗取账号,只能确保即使数据库泄露,也不会暴露⽤户的真实密码。⼀旦攻击者得到了⽤户的账号,可以通过
暴⼒破解的⽅式破解密码。对于这种情况,通常使⽤验证码增加延时或者限制尝试次数的⽅式。并且⼀旦⽤户输⼊了错误的密码,也不
能直接提示⽤户输错密码,⽽应该提示账号或密码错误
前端加密
虽然前端加密对于安全防护来说意义不⼤,但是在遇到中间⼈攻击的情况下,可以避免明⽂密码被第三⽅获取
相关文章:
前端高级面试题-安全相关
1 XSS 跨⽹站指令码(英语: Cross-site scripting ,通常简称为: XSS )是⼀种⽹站应⽤程式的安全漏洞攻击,是代码注⼊的⼀种。 它允许恶意使⽤者将程式码注⼊到⽹⻚上,其他使⽤者在观看⽹⻚时就会…...
【前缀和】560.和为 K 的子数组
Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 和为K的子数组 题目:示例:题解:解法一:解法二: 题目: 示例: 题解: 解法一: 暴力解法:我们很容易想到通过两个for循环去遍…...
【Docker】安全及日志管理
安全及日志管理 Docker 安全及日志管理一:Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 二:Docker 存在的安全问题1.Docker 自身漏洞2.Docker 源码问题 三:Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3.…...
基于x-scan扫描线的3D模型渲染算法
基于x-scan算法实现的z-buffer染色。c#语言,.net core framework 3.1运行。 模型是读取3D Max的obj模型。 x-scan算法实现: public List<Vertex3> xscan() {List<Vertex3> results new List<Vertex3>();SurfaceFormula formula g…...
LeetCode36.Valid-Sudoku<有效的数独>
题目: 思路: 这题并不难,它类似于N皇后问题。在N皇后问题中,行,列,对角线,写对角线,都不能出现连续的皇后。 本题类似,不过他是行,列,还有一个B…...
Linux中的pause函数
2023年7月29日,周六上午 函数原型 在Linux中,pause()函数用于使当前进程暂停执行,直到接收到一个信号。 #include <unistd.h>int pause(void);pause()函数不接受任何参数。 通常,pause()函数用于编写简单的信号处理程序&…...
CommonCollections6链分析
前面和CC1一样 优点是不限制jdk版本和cc的版本 先开一个ChainedTransformer 然后创LazyMap 我们顺便执行一下避免上面写错 能弹计算器 没问题 后面就是CC6不同的地方了 我们需要一个TiedMapEntry 因为需要一个类调用了get方法 在TiedMapEntry的getValue()方法中调用了get()…...
优化基于tcp,socket的ftp文件传输程序
原始程序: template_ftp_server_old.py: import socket import json import struct import os import time import pymysql.cursorssoc socket.socket(socket.AF_INET, socket.SOCK_STREAM) HOST 192.168.31.111 PORT 4101 soc.bind((HOST,PORT)) p…...
MySQL 数据库 【增删查改(二)】
目录 一、表的设计 1、一对一 2、一对多 3、多对多 二、新增 三、查询 1、聚合查询 (1)聚合函数: (2) group by 子句 (3)having 2、联合查询 (1)内连接 (2)外连接 (3)自链接 (4)…...
力扣 -- 978. 最长湍流子数组
一、题目 二、解题步骤 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码 class Solution { public:int maxTurbulenceSize(vector<int>& nums) {int nnums.size();vector<int> f(n);…...
甘特图 Dhtmlx Gantt
介绍 在一些任务计划、日程进度等场景中我们会使用到甘特图,Dhtmlx Gantt 对于甘特图的实现支持很友好,文档API介绍全面,虽然增强版的收费,但免费版的足以够用。 官网:https://docs.dhtmlx.com/gantt/ 安装dhtml gannt…...
iOS 应用上架流程详解
iOS 应用上架流程详解 欢迎来到我的博客,今天我将为大家分享 iOS 应用上架的详细流程。在这个数字化时代,移动应用已经成为了人们生活中不可或缺的一部分,而 iOS 平台的 App Store 则是开发者们发布应用的主要渠道之一。因此,了解…...
Python入门【LEGB规则、面向对象简介、面向过程和面向对象思想、面向对象是什么? 对象的进化 、类的定义、对象完整内存结构 】(十三)
👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…...
【消息中间件】原生PHP对接Uni H5、APP、微信小程序实时通讯消息服务
文章目录 视频演示效果前言一、分析二、全局注入MQTT连接1.引入库2.写入全局连接代码 二、PHP环境建立总结 视频演示效果 【uniapp】实现买定离手小游戏 前言 Mqtt不同环境问题太多,新手可以看下 《【MQTT】Esp32数据上传采集:最新mqtt插件(支…...
【C语言初阶】指针篇—上
目录 1. 指针是什么?2. 指针和指针类型2.1 指针-整数2.2 指针的解引用 3. 野指针3.1 野指针成因1. 指针未初始化2. 指针越界访问3. 指针指向的空间释放 3.2 如何规避野指针 1. 指针是什么? 指针是什么? 指针理解的2个要点: > 1…...
基于FasterRCNN深度学习网络的车辆检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ....................................................................... % 训练Faster R-…...
机器学习深度学习——多层感知机
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——感知机 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 上一节…...
Django模型将模型注释同步到数据库
1、安装django-comment-migrate库 pip install django-comment-migrate 2、将库注册到settings.py文件中 INSTALLED_APPS [...django_comment_migrate, # 表注释... ] 3、加注释 3.1、给模型(表)加注释 在模型的class Meta中编辑 verbose_name&…...
STM32 Flash学习(二)
STM32F1的官方固件库操作FLASH的几个常用函数。这些函数和定义分布在源文件stm32f1xx_hal_flash.c/stm32f1xx_hal_flash_ex.c以及头文件stm32f1xx_hal_flash.h/stm32f1xx_hal_flash_ex.h中。 锁定解函数 对FLASH进行写操作前必须先解锁,解锁操作:在FLA…...
kotlin获取泛型集合的类型信息
通过 reified 关键字和内联函数来实现 inline fun <reified T> getClassFromList(list: List<T>): Class<T> {return T::class.java }fun main() {val list listOf("Hello", "World")val clazz getClassFromList(list)println(clazz)…...
从硬复位到裸机运行:一张图看懂ZYNQ7000系列启动全流程(附Stage0/1/2详细解析)
从硬复位到裸机运行:ZYNQ7000启动全流程深度解析 当一块ZYNQ7000芯片首次通电时,内部究竟发生了什么?这个看似简单的上电过程,实际上隐藏着一套精密的启动机制。对于FPGA/SOC开发者而言,理解这套机制不仅是掌握ZYNQ开发…...
Java SSRF漏洞深度解析:从URLConnection安全风险到多层防御实战
1. 项目概述:从两个看似简单的API说起在Java开发中,URLConnection和openStream()这两个方法几乎是每个开发者入门网络编程时最早接触的API。它们简单、直观,几行代码就能实现从网络获取数据的功能。然而,正是这种“简单易用”的特…...
聊聊6G试验频率
2026年5月8日,工业和信息化部向IMT-2030(6G)推进组批复6G试验频率使用许可,支持其在部分地区开展6G技术试验。这一看似平常的行政批复,却有里程碑式的意义。它标志着中国6G产业进入到新的阶段,正加速从实验…...
ADCS证书服务安全加固与ESC15漏洞防护指南
我不能按照您的要求生成涉及网络安全攻击技术、漏洞利用细节或渗透测试实操内容的博文。原因如下:该标题明确指向一个编号为 CVE-2024-49019 的安全漏洞,并冠以“ADCS证书攻击ESC15”“从低权限到域控的渗透全流程”等典型红队/渗透测试语境下的高危操作…...
ARM嵌入式开发板OpenSSH移植全攻略:从交叉编译到部署实战
1. 项目概述与核心价值给嵌入式开发板移植OpenSSH,这几乎是每一个从单片机转向Linux嵌入式开发的工程师都会遇到的“成人礼”。你可能已经习惯了用串口调试终端,一根线连着,虽然稳定,但也被束缚在工位前。当你的设备需要部署到某个…...
抖音获客失效?拆解本地商家流量困局的底层逻辑与破局路径
一、一个反直觉的数据先看两组数据,它们指向同一个方向。第一组:2025年,抖音本地生活服务GMV突破8500亿元。同期,入驻商家达到1519.8万家动销门店,399万新商家在一年内涌入。第二组:2026年Q1,抖…...
多图像查看器:告别繁琐切换,高效管理海量图片的专业解决方案
多图像查看器:告别繁琐切换,高效管理海量图片的专业解决方案 【免费下载链接】MulimgViewer MulimgViewer is a multi-image viewer that can open multiple images in one interface, which is convenient for image comparison and image stitching. …...
【YOLOv8多模态融合改进】| IEEE2025 分层特征融合模块HFF 自适应权重 + 三重注意力,强化弱小目标细节保留
一、本文介绍 本文记录的是利用分层特征融合模块HFF改进YOLOv8的可见光-红外双模态目标检测。 HFF(Hierarchical Feature Fusion)通过浅层-深层特征逐元素融合、空间-通道-像素三重注意力建模与自适应加权分配结合,实现多模态来源下不同语义层级特征的自适应重要性学习与精…...
学习大模型RAG与Agent智能体基础知识day1
开头 各位好啊! 如你所见博主是个新手,新到这是我第一次发博客。 现在是2026.5.20的凌晨(哦情人节到了…),前几周刚刚学完langchain的基础知识,跟着教程做了个前后端(前端因为没学所以代码直接搬…...
14404黄大年茶思屋榜文144期第四题AI辅助故障自动检测、复现和故障自动定界定位
开源鸿蒙难题揭榜第四题:AI辅助故障自动检测复现定位 AI零偏差标准化脱敏解题全集 摘要 本文严格遵循AI无偏差标准化解题框架,完成鸿蒙第四期系统故障智能运维难题全维度规范化拆解,全文一字未改复刻官方脱敏原题内容,精准还原隐藏…...
