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

XSS和CSRF

web安全策略和同源策略的意义

如果登陆了一个网站,不小心又打开另一个恶意网站,如果没有安全策略,则他可以对已登录的网站进行任意的dom操作、伪造接口请求等,因此安全策略是必要的;

 

浏览器的同源策略限制了非同源的域名之间不可以对DOM进行读写操作不可以读取非同源的cookie、indexDB、localStorge等数据与资源

XSS-跨站脚本攻击

理解

由于实际业务不可能完全不引用第三方的资源,因此需要跨域访问,而支持第三方资源引用就会容易引起XSS攻击。XSS是一种代码注入攻击,攻击者在网站注入恶意脚本,在浏览器上运行,从而盗取用户cookie等信息。

危害特点

  • 窃取cookie信息,利用CORS将cookie上传到攻击者的服务器
  • 监听用户行为,比如利用addEventListener监听用户键盘事件,获取用户输入的用户名密码等
  • 修改DOM,伪造登陆窗口,骗取用户输入的用户名和密码等信息
  • 生成悬浮广告,在页面生成悬浮广告,诱导用户点击

攻击类型

  • 存储型XSS:攻击者将恶意脚本注入到有漏洞的服务器,当浏览器访问带有恶意脚本的页面时,就会上传用户信息到恶意服务器
  • 反射型XSS:攻击者诱导用户点击一个连接,然后将带有恶意代码的请求发送到服务器服务器将恶意代码返回反射到浏览器,完成最终XSS攻击
  • 基于DOM的XSS:这个攻击方法不会涉及到服务器,是在web页面资源传输过程中或者用户使用web页面过程中 修改web页面的数据。这个劫持类型较多,例如本地软件劫持、路由器劫持

防御方法

无论是哪种攻击类型,他们的共同特点都是先将恶意脚本注入浏览器,然后将用户信息发送到恶意服务器。所以阻止XSS攻击要从防止浏览器脚本注入和阻止恶意消息的发送方面来实施。

  • 服务器对输入脚本关键字符进行过滤或转码(例如 将<script 转为 &lt;script&gt;)
  • 使用验证码,防止伪造用户提交
  • 对于不受信任的输入,限制输入长度
  • 使用HttpOnly属性标记cookie(HttpOnly属性标记的cookie只能用于请求携带,不能通过js访问)
  • 采用纯前端渲染。不使用服务器渲染,通过接口请求的方式,然后使用innerText、setAttrbute等方法设置内容与属性
  • 使用CSP安全策略。CSP的本质是建立白名单。可以指定哪些外部资源可以加载,来避免恶意第三方脚本的加载;也可以禁止向第三方域提交数据,防止信息外泄;还可以禁止执行内联脚本和未授权的脚本;还提供了上报机制,这样可以帮助我们尽快的发现有哪些XSS攻击,然后进行修复。

CRSF-跨域请求伪造攻击

理解

CRSF是指跨站请求伪造攻击,攻击者诱导用户进入第三方网站,在攻击者的网站中,利用用户的登陆状态伪造跨域请求,绕过服务器的用户验证,从服务器获取信息。

他的本质是利用同源请求会携带cookie发送到服务器,来冒充用户。

攻击类型

  • get类型:比如用户在网站中的img标签中构建一个请求,在用户点击时自动发送请求
  • post类型:比如构建一个隐藏的表单,在用户进入页面时自动提交
  • 链接类型:比如在a标签的href属性中构建一个请求,在用户点击的时候自动发送

防御方法

他的攻击特点是利用服务器的漏洞,因此主要是提升服务器的安全性

  • 利用cookie的SameSite属性Strict-完全禁止第三方cookie;Lax-对于get链接的形式可以携带;None-没有任何限制
  • 验证请求的来源站点。服务器根据http请求头中的origin或referer判断是否为运行的站点,如果这两个值都不存在,则直接拒绝该请求。(缺点是有些情况referer也可以被伪造)
  • 使用CSRF Token验证。浏览器向服务器发起请求时,服务器生成一个随机的CSRF Token,当浏览器再次发送请求时携带此Token,服务器会根据这个token进行验证。(缺点是流程繁琐,每个请求都要携带Token;其次如果服务器搭载了负载均衡,如果请求被分配到其他服务器,这个服务器session中没有缓存这个token,也无法完成验证)
  • 对cookie进行双重验证。浏览器访问页面时,服务器向请求域名中注入一个随机字符串cookie,当用户再次访问时,获取cookie中的字符串并拼接到URL中,服务器根据参数中的字符串和cookie中的字符串进行对比,完成验证。(优点:比上述两种实现都为简单方便;缺点:如果同时遭遇了XSS攻击,则也将失效)

相关文章:

XSS和CSRF

web安全策略和同源策略的意义 如果登陆了一个网站&#xff0c;不小心又打开另一个恶意网站&#xff0c;如果没有安全策略&#xff0c;则他可以对已登录的网站进行任意的dom操作、伪造接口请求等&#xff0c;因此安全策略是必要的&#xff1b; 浏览器的同源策略限制了非同源的域…...

2.物联网LWIP网络

一。创建工程 1.Cubemx创建工程 &#xff08;1&#xff09;操作系统的时钟配置 &#xff08;2&#xff09;配置ETH 注意&#xff1a;根据底板原理图&#xff0c;不是核心板原理图 &#xff08;3&#xff09;配置USART1串口&#xff0c;配置为异步通信 注意&#xff1a;配置结…...

tomcat多实例与动静分离

实验&#xff1a;在一台虚拟机上配置多台tomcat 1.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh source /etc/profile.d/tomcat.sh 2.修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/…...

K8S下SpringCloud应用无损下线

废话不多说直接上代码&#xff0c;一种2个步骤 步骤一&#xff1a; 添加以下代码到SpringCloud应用中 import cn.hutool.extra.spring.SpringUtil; import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import lombok.RequiredArgsConstructor; import lo…...

CEC2013(MATLAB):遗传算法(Genetic Algorithm,GA)求解CEC2013的28个函数

一、遗传算法GA 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;起源于对生物系统所进行的计算机模拟研究&#xff0c;是一种随机全局搜索优化方法&#xff0c;它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象&#xff0c;从任…...

Linux tar包安装 Prometheus 和 Grafana

0. 介绍 用tar包的方式安装 Prometheus 和 Grafana Prometheus:开源的监控方案Grafana:将Prometheus的数据可视化平台 1. Prometheus 1. 下载 与 解压 官网下载: https://prometheus.io/download/#prometheus上传至机器解压命令:tar -xzf prometheus-*.tar.gz 2. 启动与暂…...

新一代分布式融合存储,数据场景All In One

1、摘要 2023年5月11日&#xff0c;浪潮信息全国巡展广州站正式启航。会上&#xff0c;重磅发布新一代分布式融合存储AS13000G7&#xff0c;其采用极致融合架构设计理念&#xff0c;实现同一套存储满足四种非结构化数据的“All In One”高效融合&#xff0c;数据存力提升300%&a…...

CGroupAndroid实践篇】三、Android CGroup控制组初始化

前面已经提到,android在init阶段,通过init trigger来触发控制组节点的创建,包括foreground,background,top-app,rt,system,dex2opt,system-background,nnapi-hal,camera-daemon,restricted等。 我们来看下android在init.rc中,是如何创建这些控制组节点的,如下:…...

lscpu的各个参数是什么意思?

$ lscpu Architecture: x86_64 #架构 CPU op-mode(s): 32-bit, 64-bit #运行方式 Byte Order: Little Endian #字节顺序 CPU(s): 96 #逻辑cpu数 On-line CPU(s) list: 0-95 #在线cpu Thread(s) per core: 2 #每个核包含线程…...

Linux学习————redis服务

目录 一、redis主从服务 一、redis主从服务概念 二、redis主从服务作用 三、缺点 四、主从复制流程 五、搭建主从服务 配置基础环境 下载epel源&#xff0c;下载redis​编辑 二、哨兵模式 一、概念 二、作用 三、缺点 四、结构 五、搭建 修改哨兵配置文件 启动服务…...

【C++手撕系列】——设计日期类实现日期计算器

【C手撕系列】——设计日期类实现日期计算器&#x1f60e; 前言&#x1f64c;C嘎嘎类中六大护法实现代码&#xff1a;获取每一个月天数的函数源码分享构造函数源码分享拷贝构造函数源码分享析构函数源码分享赋值运算符重载函数源码分享取地址和const取地址运算符重载函数源码分…...

FFmpeg常见命令行(四):FFmpeg流媒体

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…...

ftp访问ubuntu文件系统

ftp访问ubuntu文件系统 安装vsftpd服务器 sudo apt-get install vsftpd启动ftp服务 sudo service vsftpd start编辑vsftdp的配置文件 sudo vim /etc/vsftpd.conf找到write_enable字段并修改, 设定可以进行写操作,保存并退出 write_enable=YES从新启动ftp服务...

网络防御(6)

密码学综合应用 定义&#xff1a; 密码学综合应用是指将密码学的理论和技术应用于各种场景中&#xff0c;以保障信息的安全性、完整性和可靠性。密码学的应用范围非常广泛&#xff0c;包括通信安全、网络安全、电子商务、数字签名、认证、密钥管理等。 密码学综合应用的实例…...

【Nginx15】Nginx学习:HTTP核心模块(十二)内嵌变量

Nginx学习&#xff1a;HTTP核心模块&#xff08;十二&#xff09;内嵌变量 关于内嵌变量&#xff0c;其实就是 Nginx 开放给我们的在配置文件中可以使用的变量。源码中无非就是替换成真实的代码变量进行操作。这些变量可以帮助我们做很多事情。之前的文章中其实也有不少地方用到…...

2023年中国HPV宫颈癌疫苗需求量、竞争格局、市场规模及行业细分产品规模分析[图]

HPV宫颈癌疫苗也是人乳头瘤病毒疫苗&#xff0c;由重组表达的HPV主要衣壳蛋白L1病毒样颗粒制备而成&#xff0c;可以预防由HPV感染及其引起的各种疾病&#xff0c;包括宫颈癌、阴道癌、肛门癌和口咽癌等癌症&#xff0c;及相关癌前病变。 目前中国在售的HPV疫苗包括万泰生物的二…...

基于LMK2572的FPGA逻辑实现

项目背景: 在时钟同步或类似时钟方案系统,需要用到一些时钟芯片,LMK2572就是一款频率带宽覆盖广的芯片。 项目介绍: LMK2572该器件是一个低功耗、高性能的宽带合成器,可生成 13MHz 到 6.4GHz 的任何频率,而无需使用内部倍频器。该 PLL 可提供优异的性能,而 3.3V 单电源…...

数据通信——VRRP

引言 之前把实验做了&#xff0c;结果发现我好像没有写过VRRP的文章&#xff0c;连笔记都没记过。可能是因为对STP的记忆&#xff0c;导致现在都没忘太多。 一&#xff0c;什么是VRRP VRRP全名是虚拟路由冗余协议&#xff0c;虚拟路由&#xff0c;看名字就知道这是运行在三层接…...

第二章:CSS基础进阶-part2:CSS过渡与动画

文章目录 CSS3 过渡动画一、transition属性二、transform属性-2D变换2.1 tanslate &#xff1a; 移动2.2 rotate-旋转2.3 scale-变形2.4 skew-斜切2.5 transform-origin: 变换中心点设置 三、CSS3关键帧动画四、CSS3-3D变换4.1 perspective 定义3D元素距视图距离4.2 transform-…...

华为OD真题---玩牌高手--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 玩牌高手 给定一个长度为n的整型数组&#xff0c;表示一个选手在n轮内可选择的牌面分数。选手基于规…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...