1、XSS:跨站脚本攻击

就是攻击者想尽一切办法将可以执行的代码注入到网页中。攻击者在web页面恶意插入HTML或script标签,当用户浏览该页面时,恶意代码就会被执行,从而达到攻击的目的。XSS利用的是用户对指定网站的信任

比如:攻击者在qq中发送一个看似安全的链接,骗取用户点击之后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为信任的站点。

1.类型
  • 反射型(非持久 服务端):攻击者事先制作好攻击链接,需要欺骗用户自己去点击链接才能触发XSS代码,所谓反射型XSS就是将恶意用户输入的js脚本,反射到浏览器执行。
  • 储存型(持久型 服务端):会把攻击者的数据储存到服务端,攻击行为将伴随攻击数据一直存在,每当用户访问该页面就会触发代码执行。
  • DOM型(浏览器端):基于文档对象模型的漏洞。取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
2.危害

盗取网页浏览中的cookie值,盗用cookie实现无密码登录,盗取用户信息。

劫持访问,实现恶意跳转。

配合CSRF攻击完成恶意请求。

3.防御方法
  • 标签过滤,如<script>、<img>、<a>标签等
  • 对数据进行严格的输出编码,对字符< 、>、&、" 、' 、+、/等进行转义。
  • 开启浏览器XSS防御:Http Only cookie,禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。
  • 纯前端渲染,明确innerText、setAttribute、style,将代码与数据分隔开。
  • 避免拼接HTML;Vue/React 技术栈,避免使用 v-html / dangerouslySetInnerHTML
  • 尽量采用post而非get提交表单

2、CSRF:跨站请求伪造

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。(通过伪造连接请求,在用户不知情的情况下,让用户以自己的身份来完成非本意操作的攻击方法。CSRF利用的是网站对浏览器的信任。)

攻击类型
  • i)GET型:如在页面的某个 img 中发起一个 get 请求
  • ii)POST型:通过自动提交表单到恶意网站
  • iii)链接型:需要诱导用户点击链接
预防方案:

CSRF通常从第三方网站发起,被攻击的网站无法防止攻击发生,只能通过增强自己网站针对CSRF的防护能力来提升安全性。)

  • 验证码:对敏感操作加入验证码,强制用户与网站进行交互
  • 对Cookie设置SameSite属性。该属性表示Cookie不随着跨域请求发送,可以很大程度减少CSRF的攻击,但是该属性目前并不是所有浏览器都兼容。
  • 使用POST请求,避免使用GET,降低攻击风险,post请求攻击方需要构造一个form表单才可以发起请求,比get请求(img的src,a标签的href等等)的攻击方式复杂了一些,相对来说能降低风险,但不能阻止。
  • 只允许GET请求检索数据,但是不允许它修改服务器上的任何数据
  • 检查HTTP中的referer字段,该字段记录了HTTP请求的来源地址
  • 可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
  • 在http中自定义属性并验证。
  • 为页面增加随机数

当用户访问站点时,该站点应该生成一个(密码上很强壮的)伪随机值,并在用户的计算机上将其设为cookie。站点应该要求每个表单都包含该伪随机 值(作为表单值和cookie值)。当一个POST请求被发给站点时,只有表单值和cookie值相同时,该请求才会被认为是有效的。

.XSS与CSRF有什么区别吗?

XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

登录受信任网站A,并在本地生成cookie。

在不登出A的情况下,访问危险网站B。

3、点击挟持

ClickJacking点击劫持

当访问某网站时,利用CSS将攻击者实际想让你点击的页面进行透明化隐藏,然后在页面后显示 一些东西诱导让你点击,点击后则会在用户毫不知情的情况下做了某些操作,这就是点击劫持ClickJacking。
案例:当我们点击弹窗右上角的"X"想关闭弹窗事,跳转到其他页面。

iframe覆盖

第三方网站通过iframe内嵌某一个网站,并且将iframe设置为透明不可见,将其覆盖在其他经过伪装的DOM上,伪装的可点击DOM(按钮等)与实际内嵌网站的可点击DOM位置相同,当用户点击伪装的DOM时,实际上点击的是iframe中内嵌的网页的DOM从而触发请求操作。

以下是几种预防点击劫持的方法:

1.X-Frame-Options HTTP 响应头

可以使用 X-Frame-Options 响应头,限制特定页面在 iframe 中打开。可以使用以下响应头:

SAMEORIGIN:允许页面在相同域名下的任何 iframe 中打开。

DENY:不允许页面在任何 iframe 中打开。

ALLOW-FROM uri:允许页面在指定来源的 iframe 中打开。

2.JavaScript 防御脚本

可以使用 JavaScript 脚本来防止 iframe 的钓鱼攻击。该方法的实现原理是检查当前的页面是否在顶层窗口中运行,或者在特定的 frame 中运行。

3.CSP(Content-Security-Policy)

CSP 是一种响应头,通过指定允许在页面中运行的可信源列表来限制页面使用的内容和资源。通过配置CSP,可以防止恶意攻击者插入恶意脚本的能力。不过在实际实现中,需要进行不少工作,包括了解承载应用程序的网络拓扑,掌握应用程序的功能,了解如何针对现有攻击使用 CSP。

4.HTML5 中添加 Sandox 属性

在 HTML5 中,可以通过添加Sandox属性来设置同源策略。该属性防止 iframe 中的内容访问父窗口的 Cookies、localStorage 和其他数据,从而防止攻击者访问受害者的会话 ID 以及其他敏感信息。

4、URL漏洞跳转

定义:借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

原理:黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。安全意识低的用户点击后,经过服务器或者浏览器解析后,跳到恶意的网站中。

绕过URL跳转限制:

1.利用?号绕过限制

2.利用反斜杠和正斜杠绕过限制

3.利用@绕过URL限制

4.利用#号绕过

5、SQL注入

SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作。

预防 SQL 注入的方法如下:

  1. 参数化查询:使用预处理语句或参数化查询来避免 SQL 注入。
  2. 验证用户输入:验证用户输入的数据,确保其符合预期格式,避免非法字符等。
  3. 转义特殊字符:在使用用户输入的数据构造 SQL 语句时,对特殊字符进行转义,以防止注入。
  4. 限制权限:限制用户的权限,使其不能执行不安全的 SQL 操作。
  5. 白名单验证:白名单验证是指确保用户输入的数据只能是允许的值,避免非法数据的输入。
  6. 审核代码:定期审核代码,以确保代码的安全性,特别是对于数据库连接和查询部分的代码。

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

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

相关文章

汇编语言学习2---GNU Debugger (GDB)

学习记录&#xff0c;在汇编语言 &#xff0c;我们面对的是机器码&#xff08;以汇编指令形式展现&#xff09;&#xff0c;所以断点要设置在机器码被加载到内存中的位置。 GEF插件使用 安装插件wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/pyecho source ~/.gdbinit-g…

谈谈架构的内容

一、架构的定义架构是一个界定不清的东西&#xff0c;我们很难讲清楚哪些东西是架构&#xff0c;哪些东西不是架构。但软件行业里其实人人都在搞架构&#xff0c;软件设计就是架构本身。架构这个词出现得很早&#xff0c;有些人认为是 NASA&#xff08;也可能是NATO&#xff09…

C#文件(夹)读取相关(完善中。。。)

前言阅读项目编辑器的代码时&#xff0c;发现好多与文件&#xff08;夹&#xff09;路径相关代码。本来自己之前对路径相关的东西就模模糊糊&#xff0c;希望通过这篇笔记能让自己模糊的地方明朗一下。" / " 与 " \ "你是否有过这样的疑惑&#xff1a;Wind…

FPGA DP1.4 With DSC解决方案

引言&#xff1a;迎接高清高刷时代的显示挑战随着8K分辨率、高刷新率、HDR和更广色域内容的普及&#xff0c;传统视频接口的带宽正面临极限。DisplayPort 1.4标准虽提供了高达32.4 Gbps的带宽&#xff08;HBR3速率&#xff09;&#xff0c;但要无压缩地传输8K60Hz 10bpp HDR视频…

新手向:Python开发简易网络服务器

Python网络服务器开发指南&#xff1a;从零开始的完整实现网络服务器基础概念网络服务器是互联网基础设施的核心组件&#xff0c;它本质上是一个持续运行的程序&#xff0c;负责监听特定端口&#xff08;如HTTP服务的80端口或HTTPS的443端口&#xff09;&#xff0c;处理来自客…

819 机器学习-决策树2

一、决策树的算法信息增益&#xff1a;某个属性带来的熵增1、决策树三大经典算法• ID3 → 信息增益 信息增益&#xff1a;某个属性带来的熵增• C4.5 → 信息增益率 信息增益率&#xff1a;信息增益自身熵• CART → 基尼指数&#xff08;分类&#xff09;&#xff1b;平方误…

Objective-C 版本的 LiveEventBus 效果

想要 Objective-C 版本的 LiveEventBus 效果&#xff08;跨页面/跨模块通信&#xff0c;支持粘性和非粘性事件&#xff09;。在 iOS 里对应的就是 NSNotificationCenter&#xff0c;但是它 默认不支持粘性事件&#xff0c;所以如果你想要“粘性”&#xff0c;需要自己封装一层。…

WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析七

上一篇&#xff1a;WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析六 如果有错误欢迎指正批评&#xff0c;在此只作为科普和参考。 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\iphlpapi.h 文章目录CreateIpNetEntry&#xff1…

STM32F407VGT6从零建立一个标准库工程模板+VSCode或Keil5

一、前言 下载平台:STM32F407ZGT6 代码使用平台:VSCode 编译器:arm-none-aebi-gcc ---- 默认你已经安装 程序下载工具:STlink ---- 默认你拥有 批处理工具:make ---- 默认你已经安装 使用此方法可以不借助其它插件&#xff0c;例如:STM32EIDE。这个方法已经经过验证可以在STM3…

佩京VR党建工作站-党建VR系统-VR党建展厅

VR党建工作站是一种依托VR虚拟现实技术的数字化党建文化学习工具。它通过将丰富的学习内容植入到智慧党建科技产品中&#xff0c;构建出沉浸式的学习场景&#xff0c;从而创新了体验式学习模式&#xff0c;促进了党员的自主学习。VR党建工作站核心功能&#xff1a;1、了解实时新…

Kotlin 协程之Channel的概念和基本使用

前言 在 专栏 之前的文章中&#xff0c;我们已经知道了协程的启动、挂起、取消、异常以及常用的协程作用域等基础应用。 这些基础应用适合的场景是一次性任务&#xff0c;执行完就结束了的场景。 launch / async 适合的场景 网络请求数据库查询文件读写并行计算任务等等 而…

安装使用Conda

文章目录Linux安装 Conda&#xff08;Miniconda 或 Anaconda&#xff09;​Miniconda (轻量版)激活配置Windows安装配置 Conda​添加清华镜像源加速创建并激活 Conda 环境验证步骤​安装项目依赖运行项目Linux安装 Conda&#xff08;Miniconda 或 Anaconda&#xff09;​ Mini…

面向智能空战的深度强化学习技术综述

CSDN大礼包《大模型课程》 CSDN大礼包《深度强化学习课程》 CSDN大礼包《人工智能平台设计开发课程》

DeepSeek-V3.1 Claude Code: 革命性的AI编码助手详解与应用指南

DeepSeek-V3.1 & Claude Code: 革命性的AI编码助手详解与应用指南 今天 DeepSeek模型已支持接入 Claude Code&#xff0c;我们来深入探讨Claude Code ——Anthropic 推出的一个强大工具。它不仅仅是一个简单的代码补全助手&#xff0c;而是一个嵌入终端的智能代理&#xf…

智能求职推荐系统

智能求职推荐系统 基于知识图谱和大语言模型的智能求职推荐系统&#xff0c;为求职者提供个性化岗位推荐和AI驱动的匹配分析。 &#x1f680; 系统特性 智能推荐: 基于知识图谱的多维度职位匹配AI分析: 集成DeepSeek大模型提供深度分析和建议可视化展示: 使用ECharts展示推荐结…

瑞芯微:AIoT芯片领航者的全栈突围与生态崛起

一、业绩高速增长的底层逻辑​​瑞芯微的持续爆发式增长源于三大关键支柱&#xff1a;技术纵深​​&#xff1a;深耕“大音频、大视频、大感知、大软件”四大核心技术矩阵&#xff0c;自研NPU/ISP/编解码等核心IP持续迭代&#xff1b;精准定位​​&#xff1a;瞄准边缘侧与端侧…

【报错】Please do not run this script with sudo bash

目录 报错 分析 解决方法 扩展 报错分析 安装conda 报错 Please do not run this script with sudo bash: showHelp: command not found 分析 脚本有以下要求: 不能以root身份运行(当前是root用户)

多线程—飞机大战排行榜功能(2.0版本)

&#xff08;一&#xff09;实现功能&#xff1a; 1.基础的成绩排序 2.相同成绩随机排名 3.用户名注册重复 &#xff08;二&#xff09;效果视频&#xff1a; &#xff08;三&#xff09;代码实现&#xff1a; 3.1 && 3.2 在FileRead类中新增方法如下:具体的代码实现&a…

React + Antd+TS 动态表单容器组件技术解析与实现

概述在现代前端应用中&#xff0c;表单是用户交互的核心部分。本文将深入分析一个基于 React 和 Ant Design 的高级动态表单容器组件&#xff0c;它提供了强大的可配置性、灵活的布局选项和丰富的功能扩展能力。组件核心特性1. 高度可配置的表单结构interface FormContainerPro…

51c自动驾驶~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/11739891 #CLIP系列模型如何补短板再升级 CLIP&#xff08;Contrastive Language–Image Pre-training&#xff09;模型自推出以来&#xff0c;在图像-文本跨模态理解和生成领域取得了显著成果。然而&#xff0c;经…