XSS 与 CSRF 攻击——有什么区别,如何加以防护

跨站脚本(XSS)和跨站请求伪造(CSRF),它们将恶意脚本注入目标系统,以进一步利用技术栈或窃取用户数据。

什么是 XSS 和 CSRF?

CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和受害用户之间的信任关系。XSS和跨站脚本攻击允许攻击者破坏合法用户与任何易受攻击的应用程序的交互。

什么是 XSS?

XSS漏洞发生在web应用程序中,这些应用程序在不进行编码或验证的情况下接受用户输入并在响应中使用它。恶意用户编写恶意代码并通过输入表单提交。目标服务器包含这个脚本及其响应,客户机浏览器执行它。由于浏览器信任web服务器,它授予恶意脚本访问本地存储的cookie、会话令牌和其他敏感客户端信息的权限。

XSS是一个常见的攻击矢量,成功攻击的影响通常因不同的场景而不同,包括:

①泄露用户文件
②安装恶意软件/木马
③窃取网上银行信息
④HTML/DOM 内容修改
⑤将用户重定向到未知网站

XSS 攻击类型

XSS 攻击主要分为三类:存储型 XSS 攻击/持久型 XSS/Type-I XSS

在存储式跨站攻击中,注入的恶意代码被永久地存储在易受攻击的web应用程序的不同组件中,如数据库、评论字段、访客日志、消息论坛等。每当客户端访问受感染网站或向web服务器发起请求时,该请求就会在用户的浏览器中执行恶意脚本。

1.无目的 XSS

一种混合形式的XSS攻击,其中攻击者的脚本被存储并反映来自后端应用程序的用户。

2.反射/非持久性 XSS

在反射式跨站点脚本中,恶意脚本会从 Web 服务器反射出来,例如搜索结果、错误消息或任何其他包含某些用户输入的 Web 服务器响应。该脚本通过外部路径传递给受害者,例如不同的网站或电子邮件。当受害者提交表单、浏览黑客网站或点击可疑链接时,恶意脚本会被发送到该网站,然后反映在客户端的浏览器中。

3.基于 DOM 的 XSS

在基于 DOM 的跨站脚本中,恶意脚本是通过修改受害者浏览器的文档对象模型环境而执行的。这种攻击不会改变 Web 服务器的 HTTP 响应,但会由于 DOM 修改而改变客户端代码的执行。

什么是 CSRF?

跨站点请求伪造 (CSRF) 也称一键式攻击,是一种 Web 应用程序网络攻击,可诱使受害者在不知不觉中代表攻击者执行操作。CSRF 攻击利用 Web 应用程序中的一个安全漏洞,该漏洞无法区分经过身份验证的用户会话中的错误请求和合法请求。

攻击者通常使用社会工程技术发起 CSRF 攻击,以诱骗受害者用户加载页面或单击包含恶意请求的链接。该链接从经过身份验证的用户的浏览器向目标网站发送恶意请求。对于大多数网站,浏览器请求本质上包括会话信息,例如会话 cookie、有效令牌或网站与用户关联的登录凭据。如果经过身份验证的用户已经与目标网站处于活动会话中,则站点会将新的恶意请求视为来自用户的有效请求并执行它。

CSRF 攻击类型

如果 Web 应用程序无法区分非法请求和有效请求,那么它很容易受到跨站点请求伪造的攻击。有当认证用户与web应用程序处于活动会话时,攻击才会成功。

1.登录 CSRF 攻击

使用一种称为Login CSRF攻击的特殊形式的CSRF攻击,攻击者可以访问受害者用户的机密和敏感数据。这种攻击迫使不知情的用户登录到黑客控制的帐户。然后,受害者被骗向账户中添加个人身份识别和敏感信息,如电子邮件地址和信用卡信息。

2.存储 CSRF 攻击

CSRF攻击包也可以存储在易受攻击的网站上。对手可以通过执行高级XSS攻击或在接受HTML的字段中存储IFRAME或IMG标记来实现存储CSRF攻击。在站点上存储攻击会放大攻击的严重性和可能性,因为受害者用户现在肯定会查看CSRF加载的页面,并且也会自然地对该页面进行身份验证。

CSRF 与 XSS 的区别

CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和不知情的用户之间的信任关系。但是,XSS 和 CSRF 攻击之间存在一些根本差异,包括:

一、XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地。另一方面,CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。

二、CSRF攻击要求经过身份验证的用户处于活动会话中,而XSS攻击则不需要。在XSS攻击中,只要用户登录,就可以存储和交付有效载荷。

三、CSRF攻击的范围有限,仅限于用户可以执行的操作,例如点击恶意链接或访问黑客的网站。相反,XSS攻击提供执行恶意脚本来执行攻击者所选择的任何活动,从而扩大了攻击的范围。

四、在XSS攻击中,恶意代码存储在站点中,而在CSRF攻击中,恶意代码存储在受害用户访问的第三方站点中。

XSS 和 Javascript 注入有什么区别?

XSS 是一种客户端攻击,黑客将恶意脚本部署到 Web 服务器中,由毫无戒心的用户浏览器执行。

另一方面,Javascript 注入是一种服务器端攻击,黑客将恶意脚本发送到服务器,由解释器执行,就好像它是源代码的一部分一样。


有哪些有效的 CSRF 预防机制?

防止 CSRF 攻击的一些方法包括:

①使用同步器令牌模式
②使用双重提交 cookie
③使用 HTTP 标准标头来验证请求的来源
④使用 SameSite Cookie 进行请求来源管理
⑤CSRF 令牌的使用


一些常用的有效 XSS 预防技术包括:

①执行内容安全策略
②验证和过滤用户输入
③编码输出数据
④使用自定义响应标头(Content-Type 和 X-Content-Type-Options)来管理浏览器响应解释
⑤清理 HTML 输入

随着安全左移,在开发期间可以通过代码审计可以第一时间发现可以造成严重安全事故的缺陷及安全隐患,通过提高软件安全性防范未知安全风险。

代码审计可以帮助企业从安全角度对应用系统的所有逻辑路径进行测试,通过分析源代码,充分挖掘代码中存在的安全缺陷以及规范性缺陷。找到普通安全测试所无法发现的如二次注入、反序列化、xml实体注入等安全漏洞。主要的服务内容在于:

1.系统所用开源框架,包含java反序列化漏洞,导致远程代码执行。Spring、Struts2的相关安全。
2.应用代码关注要素,日志伪造漏洞,密码明文存储,资源管理,调试程序残留,二次注入,反序列化。
3.API滥用,不安全的数据库调用、随机数创建、内存管理调用、字符串操作,危险的系统方法调用。
4.源代码设计,不安全的域、方法、类修饰符未使用的外部引用、代码。
5.错误处理不当,程序异常处理、返回值用法、空指针、日志记录。
6.直接对象引用,直接引用数据库中的数据、文件系统、内存空间。
7.资源滥用,不安全的文件创建/修改/删除,竞争冲突,内存泄露。
8.业务逻辑错误,欺骗密码找回功能,规避交易限制,越权缺陷Cookies和session的问题。
9.规范性权限配置,数据库配置规范,Web服务的权限配置SQL语句编写规范。

总之,XSS和CSRF是Web应用中常见的安全威胁,我们必须采取有效的防护策略和技术手段来应对。在实际应用中,我们可以结合使用上述防护策略,并借助现代Web框架和库提供的安全特性来实现防护。大大提高Web应用的安全性,保护用户的隐私和数据安全。

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

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

相关文章

WPS二次开发系列:以自动播放模式打开PPT文档

在前面文章中 WPS SDK打开文档并实现保存回传 介绍了如何使用WPS SDK打开文档,那么我们是否能够实现在打开WPS 文档的时候能够传递一些参数来控制打开文档的行为呢,经过研究WPS SDK相关文档和API,最终实现了 以自动播放方式打开PPT文档功能。…

Spring Cloud微服务入门(二)

微服务的技术栈 服务治理: 服务注册、发现、调用。 负载均衡: 高可用、集群部署。 容错: 避免雪崩、削峰、服务降级。 消息总线: 消息队列、异步通信,数据一致性。 网关: 校验路径、请求转发、服务集成…

【Web】2024红明谷CTF初赛个人wp(2/4)

目录 ezphp playground 时间原因只打了2个小时,出了2道,简单记录一下 ezphp 参考文章 PHP filter chains: file read from error-based oracle https://github.com/synacktiv/php_filter_chains_oracle_exploit 用上面的脚本爆出部分源码&#xff…

SSM项目转Springboot项目

SSM项目转Springboot项目 由于几年前写的一个ssm项目想转成springboot项目,所以今天倒腾了一下。 最近有人需要毕业设计转换一下,所以我有时间的话可以有偿帮忙转换,需要的私信我或+v:Arousala_ 首先创建一个新的spr…

蓝桥杯第793题——排水系统

题目描述 对于一个城市来说,排水系统是极其重要的一个部分。 有一天,小 C 拿到了某座城市排水系统的设计图。排水系统由 n 个排水结点(它们从 1∼n 编号)和若干个单向排水管道构成。每一个排水结点有若干个管道用于汇集其他排水…

git分支-基本分支与合并

问题假设 让我们通过一个简单的分支和合并的例子,演示在实际工作中可能会使用的工作流程。将按照以下步骤进行: 在网站上进行一些工作。为正在开发的新用户故事创建一个分支。在该分支上进行一些工作。 在这个阶段,我们可能会接到一个电话…

线上研讨会 | 应对汽车毫米波雷达设计中的电磁挑战

智能汽车、新能源汽车最近几年一直是汽车行业关注的热点,随着5G技术越来越普及,汽车智能化发展将越来越迅速。从传统汽车到智能汽车,不是简单功能的增强,而是从单一功能的交通工具变成可移动的办公和娱乐空间,成为物联…

STM32实现软件SPI对W25Q64内存芯片实现读写操作

先看看本次实验的成果吧: 这么简单的一个程序,我学习了一个星期左右,终于把所有的关节都打通了。所有代码都能什么都不看背着敲出来了。为了使自己的记忆更为清晰,特意总结了一个思维导图,感觉自己即便是日后忘记了看一…

机器学习的15个概念

机器学习 有监督学习 有监督学习是利用训练数据集进行预测的机器学习任务。有监督学习可以分为分类和回归。回归用于预测“价格”“温度”或“距离”等连续值,而分类用于预测“是”或“否”、“垃圾邮件”或“非垃圾邮件”、“恶性”或“良性”等类别。 分类包含…

如何保护IP地址?安全匿名上网的方法

当互联网成为每个家庭的重要组成部分后,IP地址就成了你的虚拟地址。您的请求从该地址开始,然后 Internet 将消息发送回该地址。那么,您担心您的地址被泄露吗? 对于安全意识高或者某些业务需求的用户,如果您正在寻找保护…

C++ 静态库与动态库的生成和使用:基于 VS Studio 生成 newmat 矩阵库的静态库与动态库

文章目录 Part.I IntroductionChap.I 预备知识Chap.II 静态库与动态库区分 Part.II 静态库的生成与使用 (newmat)Chap.I 生成静态库Chap.II 使用静态库 Part.III 动态库的生成与使用 (newmat)Chap.I 生成动态库Chap.II 使用动态库 Part.IV 文件内容Chap.I test.cpp (静态库)Cha…

Hadoop Yarn

首先先从Yarn开始讲起,Yarn是Hadoop架构的资源管理器,可以管理mapreduce程序的资源分配和任务调度。 Yarn主要有ResourceManager、NodeManage、ApplicationMaster,Container ResourceMange负责管理全局的资源 NodeManage(NM&a…

九河云:在AWS上实现跨region VPC互联

如何跨region实现不同VPC之间的对等链接?九河云为您介绍AWS跨region连接方案。 说明:VPC-A位于弗吉尼亚region,VPC-B位于俄勒冈region 本文将在同一账户的弗吉尼亚和俄勒冈VPC中各启用一台EC2(本文已提前创建好VPC、EC2等资源&am…

Spring Boot中前端通过请求接口下载后端存放的Excel模板

导出工具类 package com.yutu.garden.utils;import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import org.apache.commons.io.IOUtils; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger;…

云计算的安全需求

目录 一、概述 二、云安全服务基本能力要求 三、信息安全服务(云计算安全类)资质要求 3.1 概述 3.2 资质要求内容 3.2.1 组织与管理要求 3.2.2 技术能力要求 四、云安全主要合规要求 4.1 安全管理机构部门的建立 4.2 安全管理规范计划的编制 4…

C++ //练习 11.3 编写你自己的单词计数程序。

C Primer(第5版) 练习 11.3 练习 11.3 编写你自己的单词计数程序。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*************************************************************************> …

2024最新AI创作系统ChatGPT源码+Ai绘画网站源码,GPTs应用、AI换脸、插件系统、GPT文档分析、GPT语音对话一站式解决方案

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…

记 log4j-over-slf4j.jar AND bound slf4j-log4j12.jar jar包冲突问题

报错信息如下 SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details. Exception in thread “main” java.lan…

NineData云原生智能数据管理平台新功能发布|2024年3月版

数据库 DevOps - 大功能升级 SQL 开发早期主要提供 SQL 窗口(IDE)功能,在产品经过将近两年时间的打磨,新增了大量的企业级功能,已经服务了上万开发者,覆盖了数据库设计、开发、测试、变更等生命周期的功能…

神经网络与深度学习(二)

一、深度学习平台 张量(Tensor) 是一个物理量,对高维(维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量 计算图 用“结点”…