web会话管理与xss攻击

本文深入探讨了Web会话管理的三种主要方式:Session、Cookie和Token,以及它们在认证过程中的作用。同时,分析了Session攻击,如会话劫持和中间人攻击,以及防御措施。此外,还详细阐述了XSS跨站脚本攻击的类型和防御策略,强调了数据安全和用户隐私的重要性。
摘要由CSDN通过智能技术生成

WEB会话管理

为什么需要会话管理?

http是无状态的,一次请求结束,连接断开

服务器再收到请求,无法识别此连接是哪个用户

为了辨别访问用户,需要一种记录用户的方式-----会话管理。

web应用会话管理的方式

1.session的管理方式

2.cookie的管理方式

3.token的管理方式

session的管理方式

认证过程:

1.浏览器发起第一次请求,服务器就会创建session文件,

2.服务器为每一个session都分配一个唯一的sessionid

3.服务器创建完session后将sessionid通过cookie返回给浏览器

4.用户第二次发送请求时,就会通过cookie 将sessionid传回服务器

5.用户再次请求时,服务器可根据sessionid找到该用户对应的session信息。

相关问题

1.会话信息存储在web服务器中,当服务器在线量较多时,会话信息会占据较多的内存;

2.应用采用集群部署的时候,遇到多台服务器之间如何做session共享的问题。

3.多个用户需要共享session时的跨域问题

Cookie的管理方式

cookie基础

cookie是由http服务器设置的

cookie信息保存在服务器中

cookie和session最大区别:

cookie将数据保存在客户端

session将数据存储在服务器端

认证过程

1.用户发起登录请求,服务器根据传入的用户密码之类的身份信息进行验证

2.服务器端验证用户是否满足登陆条件,如果满足则为用户创建一个登录凭证

3.服务器端把上一步创建的登录凭证,先对它做数字签名,再使用对称加密算法进行加密处理。

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

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

相关问题

实现了服务器端无状态化(所有cookie信息 都保存在客户端,服务器端无文件存储压力)

cookie 有大小限制,存储不了太多数据。

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

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

TOKEN的管理方式

和cookie 基本无区别

token必须在请求中必须通过url参数或者http header的形式主动带上

Session攻击

基于Session攻击的几种方式

主要攻击方式:

通过捕获或固定合法用户的sessionid,然后冒充用户来访问系统

ps:当前php随即生成的sessionid极复杂极难预测,且无任何规律和顺序

会话劫持

通过窃取合法用户sessionid,使用该sessionid登录目标账号的攻击方法。

攻击步骤

1.目标用户需要先登录站点

2.登陆成功后该用户获取到一个合法sessionid

3.攻击者通过某种攻击手段捕获sessionid

4.攻击者通过捕获到的sessionid访问站点即可获取目标用户合法会话

三种方式:暴破、预测、窃取

预测:如果sessionid使用非随机的方式产生,那么有可能被预测出。

暴破:需要攻击者猜测出系统中使用的有效session标识符。

窃取:使用网络嗅探、xss攻击等方法

中间人攻击(MITM)

攻击者处于 通信双方中间,拦截其中一方数据修改并转发给另一方

条件:攻击者必须处于通信双方任一方的网段内

会话固定

什么是会话固定?

诱骗受害者使用攻击者指定的会话标识的手段

攻击步骤

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

2.目标用户携带攻击者指定的sessionid登录站点

3.攻击者通过sessionid获得合法会话

重置cookie的方式

使用客户端脚本来设置lcookie到浏览器

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

防御方案

开启httponly阻止攻击者读取cookie

少数低版本浏览器存在漏洞,即使设置了httponly,也可以重写cookie

XSS跨站脚本攻击

什么是XSS

跨站脚本(Cross-Site Scripting,XSS)

由于Web应用程序对用户的输入过滤不足而产生的

攻击者利用网站漏洞把恶意的脚本代码(HTML代码/JavaScript脚本)注入到网页之中

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

主要可以对用户Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。

XSS的分类

反射型XSS

也称为非持久型、参数型跨站脚本

主要用于将恶意脚本附加到eurl地址中的参数

攻击原理

(1)攻击者将恶意链接通过电子邮件、短信等方式发送给受害者

(2)受害者点击恶意链接后就会向服务器发送请求,该请求会携带攻击者的脚本

(3)服务器的返回的响应也依然包含有攻击者的xss脚本

(4)接着受害者客户端解析前端代码,并将xss脚本执行

存储型XSS

持久型跨站脚本 == 存储型跨站脚本

此类XSS不需要用户单击特定URL就能执行跨站脚本

攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中 ,当受害者浏览包含此恶意的JavaScript代码的页面就会执行恶意代码

攻击原理

(1)攻击者首先将恶意代码<script>注入到服务器数据库中(比如库中的某字段)

(2)受害者请求到带有xss脚本的字段

(3)服务器就会将带有xss脚本的数据返回给受害者

(3)当受害者的浏览器接受到服务器响应就会将脚本进行解析执行

攻击者不需要直接将 代码发送给受害者,只需要将恶意代码插入到受害者会访问的服务器中即可实现xss攻击,故此类xss威胁较大

DOM型XSS

DOM是什么?

将xml文件的 节点构建成树状结构,以此反映xml文件本身的阶层结构

节点分三种

元素节点

文本节点

属性节点

DOM型XSS原理

客户端脚本程序可以通过DOM动态检查和修改页面内容。

程序执行不依赖于服务器端的数据,从客户端获得DOM的数据并在本地执行。

浏览器用户可以操纵DOM中的一些对象,例如URL、location等

用户在客户端输入的数据如果包含了恶意javascript脚本,而这些脚本没有经过适当的过滤和消毒,应用程序就可能受到基于DOM的XSS攻击

两种利用方式

1.文本框输入

<script>alert(1)</script>

<script><img src=1 οnerrοr=alert(1)></script>

2.GET方式提交参数

漏洞表象:当文本框提交可以执行输入的js代码时(如弹窗)则表示有xss漏洞

cookie基本原理

cookie是用户浏览网页时网站存储在用户机器上的小文本文件。

主要记录与用户相关的一些状态或者设置,比如用户名、id、访问次数等。当用户下一次访问这个网站时,网站会先访问用户机器上对应的该网站的cookie文件。

cookie的作用:

1.维持会话的凭证

2.减少登录网站的次数

3.记录关于用户信息

cookie的操作

浏览器通过Document对象访问cookie。

若要创建一个Cookie,只要将特定格式的字符串赋给document.cookie即可:cookieName = cookieValue;expirationdate;path

后端语言处理方式:

PHP setrawcookie()

setcookie()

cookie的属性

获取用户端cookie信息

xss其他用途:

1.获取会话cookie

2.xss重定向钓鱼

3.html注入式钓鱼

XSS防御手段

XSS Filter

作用是过滤用户(客户端)提交的有害信息,从而打到防范xss攻击的效果

XSS Filter作为防御跨站攻击的主要手段之一,已经广泛应用在各类Web系统之中,包括现今的许多应用软件,例如Chrome浏览器,通过加入XSSFilter功能可以有效防范所有非持久型的XSS攻击攻击。

两种过滤

业内防御跨站脚本攻击(XSS)的方式一般有两种:Input Filtering 和 Output Filtering,即分别在输入端和输出端进行过滤

输入过滤的所有数据都需要经过XSS Filter处理,被确认安全无害后才存入数据库中,而输出过滤只是应用于写出页面的数据,换言之,如果一段恶意代码早已存入数据库中,若只有采用输出过滤才能捕获非法数据,那么这两种方式在防范持久型(存储型)XSS的时候会产生巨大的差异

输入过滤

“永远不要相信用户的输入”是网站开发的基本常识

使用各类函数对输入进行过滤判断

常见过滤判断

输出过滤

在数据输出之前先对部分敏感字符进行转义,这是一个很安全的方法,能有效保持数据的完整性。缺点是必须对每一个细节的输出进行仔细过滤,因此会带来额外的工作量。

htmlspecialcharts():将特殊符号转换为html实体编码,这样浏览器无法将其视为js代码进行执行,同时也可以很好的保持数据的完整性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值