Web安全漏洞分析-XSS(上)

        随着互联网的迅猛发展,Web应用的普及程度也愈发广泛。然而,随之而来的是各种安全威胁的不断涌现,其中最为常见而危险的之一就是跨站脚本攻击(Cross-Site Scripting,简称XSS)。XSS攻击一直以来都是Web安全领域的重点关注对象,其危害程度不可小觑。
       在此篇博客中,我将深度剖析XSS攻击,从其基本原理到实际案例,探讨其可能带来的后果以及如何有效地防范。通过对XSS攻击的全面解析,我们希望读者能够更全面地了解这一Web安全漏洞,并采取相应的措施保护自己的Web应用。

一、会话管理

1、WEB会话管理概述

(1)、为什么需要会话管理

http是无状态的,一次请求结束,连接断开服务器再收到请求,无法识别此连接是哪个用户为了需要辨别访问用户,需要一种记录用户的方式

(2)、web应用会话管理的方式

session的管理方式

cookie的管理方式

token的管理方式

2、SESSION管理方式

(1)、认证过程

①、服务端session是用户第一次访问应用时,服务器就会创建的对象。

②、服务器并为每一个session都分配一个唯一的sessionid。

③、服务器在创建完session后,会把sessionid通过cdokie返回给用户所在的浏览器

④、当用户第二次向服务器发送请求的时候,就会通过cookie把sessionid传回给服务器

⑤、用户再次请求,服务器能够根据sessionid找到与该用户对应的session信息。

(2)、认证过程

3)、相关问题

①、这种方式将会话信息存储在web服务器里面,当用户同时在线量比较多时,这些会话信息会占据比较多的内存;

②、当应用采用集群部署的时候,会遇到多台web服务器之间如何做session共享的问题

③、多个应用要共享session时,还会遇到跨域问题

4)、实验代码逻辑

(5)、前端代码
<html><meta charset="utf-8"><form action="login.php" method="POST">username:<br><input type="text" name="username"><br>password:<br><input type="text" name="password"><br><input type="submit" value="Submit"></form></html>

(6)后端代码

①、后端代码(login.php)

<?phpsession_start0;$usr = $_POSTTusername'];$pwd = $_POSTI'password'];if($usr==='admin'&&$pwd==='admin'){echo'登录成功';$_SESSION["admin"]=1;var_dump($_SESSION);}else{echo登录失败';}?>②、后端代码 (check.php)<?phpsession_start0);var_dump($_SESSION);if($_SESSION["admin"]==1){echo"没错你就是管理员",}else{echo"我不知道你是谁",}?>③、后端代码 (unset.php)<?phpsession_start0;unset($_SESSIONTuser']);session_destroy();?>

3、COOKIE管理方式

(1)、Cookie基础

①、Cookie是由HTTP服务器设置的

②、Cookie信息保存在浏览器中

(2)、Cookie和Session最大区别:

①、Cookie将数据存储客户端

②、Seesion将数据存储在服务器端

(3)、认证过程

①、用户发起登录请求,服务端根据传入的用户密码之类的身份信息。

②、服务端验证用户是否满足登录条件,如果满足,就根据用户信息创建一个登录凭证

③、服务端把上一步创建好的登录凭证,先对它做数字签名,然后再用对称加密算法做加密处理。

④、将签名、加密后的字串,写入cookie。cookie的名字必须固定。

⑤、用户登录后发起后续请求,服务端根据上一步存登录凭证的cookie名字,获取到相关的cookie值。

(4)、认证过程
5)、相关问题

①、实现了服务端无状态化

②、cookie有大小限制,存储不了大多数据

③、每次传送cookie,增加了请求的数量,对访问性能也有影响

④、同样存在跨域问题(不同域名无法互相读取cookie)

4、TOKEN管理方式

(1)、token管理方式

①、流程和实现上跟cookie-based基本无区别。

②、cookie-based里面写到cookie里面的ticket,此情景称为token。

③、token在请求都必须通过url参数或者是http header的形式,主动带上token。

(2)、认证过程

二、Session攻击

1、关于session攻击

(1)、主要攻击方式

首先通过捕获或者固定合法用户的session,然后冒充该用户来访问系统

(2)、三种方式来获取一个有效的session标识符

①、预测    ②、捕获 (劫持)      ③、固定

2、认证凭证预测

(1)、原理

预测需要攻击者猜测出系统中使用的有效的session标识符,类似暴力破解

(2)、目前Session安全

①、PHP生成随机的session id极其复杂的并且难于被预测出来

②、PHP生成session字符串无任何规律和顺序

3、会话劫持

(1)、含义

①、会话劫持 (Session hijacking).

②、通过窃取合法用户Session ID后,使用该Session ID登录目标账号的攻击方法。

③、会话劫持最重要的部分是取得一个合法的会话标识来伪装成合法用户

(2)、攻击步骤

①、目标用户需要先登录站点

②、登录成功后,该用户会得到站点提供的一个会话标识SessionID

③、攻击者通过某种攻击手段捕获Session ID

④、击者通过捕获到的Session ID访问站点即可获得目标用户合法会话

(3)、会话劫持过程

(4)、攻击者获取Session ID的方式有多种

①、暴力破解:尝试各种SessionID,直到破解为止

②、预测: 如果SessionID使用非随机的方式产生,那么就有可能计算出来

③、窃取: 使用网络嗅探,XSS攻击等方法获得

(5)、XSS攻击:

①、跨站脚本 (Cross-Site Scripting,XSS)攻击者利用网站漏洞把恶意的脚本代码注入到网页之中

②、当其他用户浏览这些网页时,就会执行其中的恶意代码。

③、主要对受害用户采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击

(6)、中间人攻击:

中间人 (MITM)

攻击者将它自己放到两方之间,通常是客户端和服务端通信线路的中间通过破坏原始频道之后拦截一方的消息并将它们转发给另一方来实现。

4、会话固定

(1)、什么是会话固定

①、会话固定 (Session fixation)

②、诱骗受害者使用攻击者指定的会话标识 (SessionID)的攻击手段

③、这是攻击者获取合法会话标识的最简单的方法。

(2)、攻击步骤

①、攻击者通过某种手段重置目标用户的SessionID,然后监听用户会话状态

②、目标用户携带攻击者设定的Session ID登录站点;

③、攻击者通过Session ID获得合法会话;

(3)、会话固定过程

(4)、重置cookie的方式

①、使用客户端脚本来设置Cookie到浏览器

<script> document.cookie='PHPSESSID=99999';</script>

(5)、防御方案

①、开启Httponly阻止攻击者读取Cookie

但有少数低版本浏览器存在漏洞,即使设置了HttpOnly,也可以重写Cookie

(6)、重置cookie的方式

①、HTML的<META>标签加Set-Cookie属性

<meta http-equiv=Set-Cookie'content=PHPSESSID=23333'>

三、Cookie安全

1、Cookie安全

(1)、Cookie字段
  • [name][value][domain][path][expires][httponly][secure]
  • 依次是: 名称、值、域名、相对根路径、过期时间、是否有httponly标志、是否有secure标志
(2)、子域Cookie

①、domain字段,设置cookie时如不指定则默认是本域

例如www.360.com通过javaScript设置一个cookie:document.cookie=“test=1"

例如www.360.com通过javaScript设置一个父域:document.cookie=“test=1; domain=360.com”

(3)、路径Cookie

①、path字段,设置cookie时如不指定则默认是当前页面路径

例如www.360.com/admin/index.php页面设置一个cookiedocument.cookie=“test=1"

  • Path值是/admin           只有该/admin/径下的页面才能读取到该cookie

2、HttpOnly

(1)什么是HttpOnly
  • HttpOnly是Cookie的一种属性
  • 指示浏览器不要在除HTTP (和 HTTPS)请求之外暴露Cookie。
  • PHP setCookie0最后一项
(2)、如何设置

Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项。

开启方法为:

<?phpsetcookie("abc","test", NULL, NULL,NULL,NULL,TRUE);setrawcookie("abc","test", NULL,NULL, NULLNULL,TRUE);?>
(3)、相关函数

setcookie():

setcookie() 函数向客户端发送一个 HTTP cookie

(4)、设置httponly

(5)、读取HttpOnly Cookie
  • Phpinfo()

②、CVE-2012-0053

Apache服务器2.2.0-2.2.21版本存在一个漏洞攻击者可通过给网站植入超大的Cookie,使得HTTP头超过apache的LimitRequestFieldSize (最大请求长度)4192字节,apache便会返回400错误并在返回信息中包含了http-onlycookies

3、Cookie存储

(1)、本地存储与内存存储

①、存储方式与过期时间 (expires) 相关。

②、没设置过期时间,则是内存Cookie,浏览器关闭cookie失效:

③、设置了时间点,cookie会以文本的形式保存在系统本地。

④、Document.cookie=expires=1;expires=Mon, 01 Jan 2020 00:00:00 GMT方式更安全

(2)、Cookie本地存储方式

浏览器本地存储方式:

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

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

相关文章

万界星空科技/仓库管理WMS系统/免费仓库管理系统

仓库管理&#xff08;仓储管理&#xff09;&#xff0c;指对仓库及仓库内部的物资进行收发、结存等有效控制和管理&#xff0c;确保仓储货物的完好无损&#xff0c;保证生产经营活动的正常进行&#xff0c;在此基础上对货物进行分类记录&#xff0c;通过报表分析展示仓库状态、…

使用Python爬取快手视频与评论(App与Web端分析)

文章目录 1. APP端抓包配置2. APP端抓包分析3. Web端抓包分析4. 爬虫代码实现 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a…

酷开科技:让体育迷的热情释放,让运动精神传递

在繁忙的生活节奏中&#xff0c;我们总是被各种琐事所困扰&#xff0c;很难抽出时间去享受运动带来的快乐&#xff0c;甚至很少有时间去观看一场体育赛事。而一场好的体育赛事带给体育爱好者的快乐往往来自于两方面&#xff0c;一是线下参与&#xff0c;感受现场带来的震撼&…

基于Java SSM框架+Vue实现病人跟踪治疗信息系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现病人跟踪治疗信息系统演示 摘要 病人跟踪治疗信息管理系统采用B/S模式&#xff0c;促进了病人跟踪治疗信息管理系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段&#xff0c;管理效率极低&#xff0c;随着病人的不断增多&#xff0c;…

Java---抽象类讲解

文章目录 1. 抽象类概述2. 抽象类特点3. 抽象类的成员特点4. 抽象类猫狗应用 1. 抽象类概述 在Java中&#xff0c;一个没有方法体的方法应该定义为抽象方法&#xff1b;而类中如果有抽象方法&#xff0c;该类必须定义为抽象类。 2. 抽象类特点 1. 抽象类和抽象方法必须使用abst…

Python将Labelme的Json标注文件进行增、删、改、查

Python将Labelme的Json标注文件进行增、删、改、查 前言前提条件相关介绍实验环境Json标注文件的增、删、改、查增代码实现输出结果 删代码实现输出结果 改代码实现输出结果 查代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精…

【JavaEE初阶】——JVM介绍(面试高频)

文章目录 前言一、进程和线程二、JVM进程三、JVM介绍 3.1 JVM内存区域划分 3.2 JVM类加载 3.3 JVM垃圾回收&#xff08;CG&#xff09;四、JVM常见选择题总结 前言 一、进程和线程 在谈JVM的这些问题前&#xff0c;我们先来复习一下有关线程和进程的关系 进程&…

在Springboot中将数据渲染到前端页面1.0

前端数据代码&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <emps><emp><name>金毛狮王</name><age>55</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg</image…

RK3568 android 13 内置 google GMS服务

需求&#xff1a;Android 系统在国外使用安装app很多需要gms服务&#xff0c;否则无法正常使用&#xff0c;所以出厂前必须要把GMS包集成进系统 1.下载gms包https://download.csdn.net/download/qq_46524402/88136401 2.解压gms包 并放到Android SDK根目录的vender文件夹下 3…

NSSCTF第14页(1)

[suctf 2019]checkin 利用了几种方式&#xff0c;发现都不行 1是修改mime类型&#xff0c;2是修改php标签为js标签&#xff0c;3是修改文件后缀 在试试用配置文件来上传 发现上传.user.ini文件成功 发现上传成功 上传的png图片 访问上传路径发现可以访问&#xff0c;上马成…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗? 我本来以为是 IDEA 版本更新导致的 Bug&#xff0c;开始还没在意。 直到我今天自己初始化项目时才发现&…

解决VS2019无法正常显示XAML设计界面问题

问题描述 当VS2019配置工程为x64模式时&#xff0c;打开工程中XAML页面可能出现如下错误提示&#xff0c;进而无法正常显示XAML设计界面。 There was an exception when loading the design time assembly C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\16.0_…

某60物联网安全之IoT漏洞利用实操2学习记录

物联网安全 文章目录 物联网安全IoT漏洞利用实操2&#xff08;内存破坏漏洞&#xff09;实验目的实验环境实验工具实验原理实验内容实验步骤ARM ROP构造与调试MIPS栈溢出漏洞逆向分析 IoT漏洞利用实操2&#xff08;内存破坏漏洞&#xff09; 实验目的 学会ARM栈溢出漏洞的原理…

二.运算符

运算符 1.算术运算符2.比较运算符3.逻辑运算符 1.算术运算符 算数运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行 - * / 和 取模%运算 1.加减法运算符 mysql> SELECT 100,100 0,100 - 0,100 50,100 50 - …

输入通道数 和 输出通道数 的理解

输入通道数&#xff08;in_channels&#xff09;输出通道数&#xff08;out_channels&#xff09; 在卷积神经网络中通常需要输入 in_channels 和 out_channels &#xff0c;即输入通道数和输出通道数&#xff0c;它们代表什么意思呢&#xff1f; 输入通道数&#xff08;in_c…

nexus

一、nexus介绍二、nexus部署部署java环境安装配置nexus浏览器访问 三、创建一个内网yum源四、创建一个代理yum仓库五、jenkins 使用 nexus插件jenkins部署maven-proxy配置 maven 工程查看构建和上传 一、nexus介绍 Nexus 是一个强大的仓库管理工具&#xff0c;用于管理和分发 …

linux用户组管理_创建删除密码修改

2.2 用户/组管理 2.2.1 用户 2.2.1.1 useradd&#xff1a;创建用户 添加用户账号就是在系统中创建一个新账号&#xff0c;然后为新账号分配用户号、用户组、主目录和登录Shell等资源。 useradd命令的基本语法如下&#xff1a; useradd 选项 用户名 常见选项参数&#xff…

瑞云科技参与《数字孪生世界白皮书》编写,实时云渲染助力数字孪生

为了促进数字孪生技术的发展和应用&#xff0c;易知微与数字孪生世界企业联盟联合众多行业专家以及多家业内企业共同编写了《数字孪生世界白皮书&#xff08;2023&#xff09;》。该白皮书从数字孪生的综述、应用架构、核心技术、新型技术成果和重点行业应用等方面&#xff0c;…

【算法刷题】Day9

文章目录 611. 有效三角形的个数![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9d627e680e9144a2b67474a1d80aa030.png)题解&#xff1a;代码&#xff1a; LCR 179. 查找总价格为目标值的两个商品题解&#xff1a;代码&#xff1a; 611. 有效三角形的个数 原题链…

端口隔离度

端口隔离度 隔离度为&#xff08;本振或射频信号&#xff09;泄漏到其他端口的功率与输入功率之比&#xff0c;单位是dB。 比如 RF to LO Isolation 表示 射频输入信号的功率 与 泄漏到LO端口的功率 之比。 而 LO to RF Isolation 则表示 本振输入信号的功率 与 泄漏到RF端口的…