前端安全专题

xss (Cross Site Scripting) 跨站脚本攻击

原理

通常指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

常见攻击类型
存储型XSS

攻击者将恶意的 JavaScript 脚本存储在网站的服务器上(例如,在一个评论区中发布含有恶意脚本的评论)。当其他用户浏览到包含这些脚本的页面时,就会执行这些脚本。

反射型XSS

反射型XSS只是简单地把用户输入的数据”反射“给浏览器。也就是说黑客往往需要诱使用户”点击“一个恶意链接,才能攻击成功。反射型XSS也叫”非持久型XSS”。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
  <div id="t"></div>
  <input type="text" id="text" value="" />
  <button onclick="test()" >提交</button>
  <script> 
  	function test() {
      var str = document.getElementById('text').value;
      document.getElementById('t').innerHTML = "<a href='" + str + "' >testLink</a>";} 
  </script>
 
</body>
</html> 


// 输入框构造如下数据:
' onclick=alert(/xss/) // 
// 它先用一个单引号闭合掉href的第一个单引号,然后插入一个onclick事件,最后再用注释符“//”注释掉第二个引号。 输入后,页面代码变成了:
<a href="" onclick="alert(/xss/)" '>testLink</a> 
// 点击新生成的这个链接,脚本将被执行。


// 其实这里还有另外一种利用方式,还可以选择闭合掉<a>标签,并插入一个新的HTML标签。尝试如下输入:
'><img src=# οnerrοr=alert(/xss2/) /><' 
// 页面代码变成了
<a href=""><img src="#" onerror="alert(/xss2/)"><''>testLink</a>

// 脚本直接被执行,弹出/xss2/。
DOM型XSS攻击

这种攻击是通过修改页面的 DOM 结构,使得恶意脚本得以执行。

CSRF(Cross-Site Request Forgery) 跨站请求伪造

利用的是网站对用户网页浏览器的信任。攻击者通过一些技术手段欺骗用户的浏览器去访问一个用户以前认证过的站点并运行一些操作(如发邮件,甚至进行财产操作如转账和购买商品等)。早期的网站用户和服务器的通信,是使用cookie进行认证的,而攻击者可以通过完全伪造用户的请求,因为请求中所有的用户验证信息都是存在于cookie中的。
多窗口浏览器(firefox、谷歌……)便捷的同时也带来了一些问题,因为多窗口浏览器新开的窗口是具有当前所有会话的。单窗口浏览器IE就不会,如我用ie登陆了我的Blog,然后我想看新闻了,又运行一个IE进程,这个时候两个IE窗口的会话是彼此独立的,从看新闻的IE发送请求到Blog不会有我登录的cookie;但是多窗口浏览器永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在blog登录的cookie。

例子:

image.png
(1)用户在a站前端页面发起登录(身份认证)请求
(2)a站后端确认身份,登录成功,cookie中存在用户的身份认证信息
(3)b站前端页面向a站后端发起请求,带着a站的cookie信息(身份认证信息),请求成功
综上,可以清楚的知道,只要用户访问了b站的前端页面,b站就可以在用户完全不知道的情况下,带着a站的用户登录态(cookie)向a站发起请求

解决方案:

为了抵御这一攻击,现在的做法是让认证信息部分无法被伪造,同时用户的关键信息(如密码等)不能被直接查看到(一般是进行加密)。在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
此外,还有验证码、指纹、人脸等等,用于防御CSRF攻击。验证码强制用户必须与应用进行交互,才能完成最终请求,能很好的遏制CSRF攻击,但是用户体验比较差。
禁止第三方网站携带本网站的cookie信息:设置same-site属性,same-site属性有两个值,Strict(所有的第三方请求都不能携带本网站的cookie)和Lax(链接可以,但是form表单提交和ajax请求不行

按钮点击劫持

是一种常见的网络攻击手段,也被称为“UI 覆盖攻击”。在这种攻击中,攻击者将一个透明的、恶意的网页覆盖在一个用户期望看到的网页上面。当用户在页面上进行操作(如点击按钮)时,他们实际上是在点击攻击者的透明页面,从而触发了攻击者预设的行为。
后果:用户自己做了点击操作,用户自己毫不知情

解决方案:
  1. 使用 X-Frame-Options HTTP 响应头:这是一种 HTTP 响应头,可以防止你的网页被嵌入到其他网页的 iframe 中。你可以将这个响应头设置为 DENY(禁止所有的域嵌入你的网页),或者 SAMEORIGIN(只允许相同域名的网页嵌入你的网页)。
  2. 使用 JavaScript 检测:你可以在你的网页中添加 JavaScript 代码,检测你的网页是否被嵌入到 iframe 中。
/**
Javascript禁止内嵌:当网页没有被使用iframe内嵌时,top和window是相等的;
当网页被内嵌时,top和window是不相等的;可以在本网站的页面中添加如下判断:
*/ 
<script>
if (top.location != window.location) {
    //如果不相等,说明使用了iframe,可进行相关的操作
}
</script>
  1. 一些辅助手段,比如添加验证码,提高用户的防范意识

sql注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的sql语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SSRF 服务器端请求伪造

一种由攻击者构造由服务端发起的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(类似于请求代理转发的原理)

攻击目标

从外网无法访问的内部系统
对外网服务器所在内网,进行端口,z资源信息搜集

形成的原因

大部分是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制

攻击方式

借助主机A来发起SSRF攻击,通过主机A向主机B发起请求,从而获取主机B的一些信息。
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C程序训练:阶乘与溢出

已知n是整数&#xff0c;计算12!3!...n!&#xff0c;并给出最大能够计算的n值是多少&#xff1f; 1. 假设n是int类型&#xff0c;系统用32位表示int类型。代码如下&#xff1a; #include <stdio.h> int main() {int n,sum1,sum1,fact1;int step;for(n2; n<100; n) {…

【Win11】电脑正常联网浏览器却打不开???

今天本来打算打开B站开始今天的学习之旅&#xff0c;一打开却发现。。。 我还以为电脑没联网但是微信可以聊天发消息然后我在dos窗口测了下网络是正常联通的 然后我开始慌了&#xff0c;这阳光明媚的一天不看B站学习怎么行&#xff0c;然后我就开始在百度上冲浪找解决方案&…

探索设计模式的魅力:简单工厂模式

简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;其主要目的是用于创建对象的实例。这种模式通过封装创建对象的代码来降低客户代码与具体类之间的耦合度。简单工厂不是GoF&#xff08;四人帮&#xff09;设计模式之一&#xff0c…

WAMP apache 无法启动(端口 80 未使用)

这段时间系统重装后&#xff0c;安装WAMP Server&#xff0c;装好后点击启动绿了下然后又变成了黄色&#xff0c;托盘图标无论是左键点击还是右键点击都没有反应&#xff0c;wampapache64服务也启动不起来&#xff0c;提示“windows不能在本地计算机启动wampapache”&#xff0…

软件系统部署方案书(Word)

一、 引言 &#xff08;一&#xff09; 编写目的 二、 外部设计 &#xff08;一&#xff09; 标识符和状态 &#xff08;二&#xff09; 约定 1&#xff0e; 数据库涉及字符规范 2&#xff0e; 字段命名规范 &#xff08;三&#xff09; 专门指导 &#xff08;四&#…

基于JAVA开发的数字化智慧工地管理平台源码,可私有化部署、带可视化大屏

智能工地应用价值 智慧工地现场构建了基于物联网的智能化数据传感器通用的管理平台。利用计算机、人工智能、无线通信&#xff0c;全天候现场监视、施工检查、质量管理、服务&#xff0c;提高数字化管理、安全、绿色、施工等现场管理能力&#xff0c;标志着现场管理进入信息化时…

小程序基础学习(插槽)

一&#xff0c;新建一个组件文件 二&#xff0c;设置插槽 三&#xff0c;微信小程序里面插槽没有默认值需要用wxss来设置&#xff0c;检查插槽这个标签是否为空&#xff0c;如果为空则默认值的view显示 四&#xff0c;写入页面 五&#xff0c;插槽代码 <!--components/my-…

bootloader学习笔记及SD卡启动盘制作

Bootloader介绍 在操作系统运行之前运行的一小段代码&#xff0c;用于将软硬件环境初始化到一个合适的状态&#xff0c;为操作系统的加载和运行做准备&#xff08;其本身不是操作系统&#xff09; Bootloader基本功能 1、初始化软硬件环境 2、引导加载linux内核 3、给linux…

磁盘直通卡/阵列卡讲解

服务器SAS卡 ① 华为SR120 (LSI 2308 6Gb SAS直通卡),适合数据安全等级不高或 更换简单 硬盘即插即用 ② 华为SR320 (LSI 2208 6Gb SAS阵列卡 带512M缓存),适合对数据安全等级要求高或追求磁盘性能的客户 推荐上阵列卡 ③ 华为SR130 (LSI 3008 12Gb SAS直通卡),适合数据安全等…

DAY6--learning english

一、积累 1.sip She took a small sip of the hot tea to savor its delicate flavor. 她小口抿了一口热茶&#xff0c;细细品味其中的淡雅滋味。 2.vacuum Expreience the amazing cleaning power of vaccum cleaner. 体验真空吸尘器惊人的清洁能力。 3.stray Stray kitte…

基于JAVA的用户画像活动推荐系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

中霖教育:CPA注册会计师报考注意事项有哪些?

在报考注册会计师时&#xff0c;以下这些注意事项你一定要了解! 1.CPA报考的条件 考生需要具备完全民事行为能力;具有高等专科以上学校毕业学历&#xff0c;或者具有会计或者相关专业中级以上技术职称。 2.专业阶段考试科目为&#xff1a; 《会计》、《审计》、《税法》、《…

ElasticSearch 学习9 spring-boot ,elasticsearch7.16.1实现中文拼音分词搜索

一、elasticsearch官网下载&#xff1a;Elasticsearch 7.16.1 | Elastic 二、拼音、ik、繁简体转换插件安装 ik分词&#xff1a;GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized d…

数据结构与算法:插入排序希尔排序

数据结构与算法&#xff1a;插入排序&希尔排序 插入排序希尔排序 插入排序 假设现在你有一个有序的数组&#xff0c;你要把一个数据插入到数组中&#xff0c;保证插入后依然有序&#xff0c;要怎么做&#xff1f; 对于人来说&#xff0c;这个问题就像是在整理扑克牌&…

第一个 OpenGL 程序:旋转的立方体(VS2022 / MFC)

文章目录 OpenGL API开发环境在 MFC 中使用 OpenGL初始化 OpenGL绘制图形重置视口大小 创建 MFC 对话框项目添加 OpenGL 头文件和库文件初始化 OpenGL画一个正方形OpenGL 坐标系改变默认颜色 重置视口大小绘制立方体使用箭头按键旋转立方体深度测试添加纹理应用纹理换一个纹理 …

0104 AJAX介绍

Ajax 的全称是 Asynchronous Javascript And XML &#xff08;异步 JavaScript 和 XML &#xff09;。 通俗的理解&#xff1a;在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式&#xff0c;就是 Ajax Ajax 能让我们轻松实现网页与服务器之间的数据交互。 浏览器…

基础篇_数据持久化(实战-我的B站,MySQL数据库)

文章目录 一. 实战-我的B站1. 功能演示2. 设计数据类数据展示路径参数 3. 设计 Service 类静态资源映射读取文件的时机Stream API 改进 二. MySQL 数据库1. 数据库必要性2. MySQL 安装下载压缩包初始化数据库运行服务器运行客户端 3. 初步使用4. datagrip添加数据源导入数据用 …

【网络安全】【密码学】【北京航空航天大学】实验四、古典密码(上)【C语言实现】

实验四、古典密码&#xff08;上&#xff09; 一、实验目的 1、 通过本次实验&#xff0c;了解古典加密算法的主要思想&#xff0c;掌握常见的古典密码。 2、 学会应用古典密码&#xff0c;掌握针对部分古典密码的破译方法。 二、原理简介 古典密码的编码方法主要有两种&am…

【深度学习环境搭建】Windows搭建Anaconda3、已经Pytorch的GPU版本

目录 搭建Anaconda3搭建GPU版本的Pytorch你的pip也要换源&#xff0c;推荐阿里源打开conda的PowerShell验证 搭建Anaconda3 无脑下载安装包安装&#xff08;自行百度&#xff09; 注意点&#xff1a; 1、用户目录下的.condarc需要配置&#xff08;自定义环境的地址&#xff08…

【TC3xx芯片】TC3xx芯片电源管理系统PMS详解

目录 前言 正文 1.供电模式选择&#xff08;Supply Mode Selection&#xff09; 1.1 供电域 1.2 供电模式 1.3 供电阈值 1.4 供电上升和下降行为Supply Ramp-up and Ramp-down Behavior 1.5 EVRC产生供电 2. 电源监控 2.1 电源监控原理 2.2 Primary低电压监控 2.3 …