IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 应用安全系列之三十二:会话管理 -> 正文阅读

[JavaScript知识库]应用安全系列之三十二:会话管理

Web应用基于HTTP协议实现的,但是,HTTP协议是无状态的【参考RFC2616?section 5】,也就是说如果纯粹基于HTTP协议来实现一个应用,前后请求的消息就需要一个能够保持登录状态的东东,这个东东就是会话【session】。由于HTTP是无状态,所以这个会话的管理是通过Cookie来实现的,通常通过Cookie来管理的有标示会话的ID和用户登录之后获得的Token。

由于会话ID或者Token表示一个人已经登录而且可以根据自己的权限在网站内畅游,所以,他也就成了攻击者的目标。以前,出现过的会话ID可预测、URL中的会话ID问题等问题,在最近的一些web服务器组件中已经基本上消除了。所以,想通过预测会话ID或者在URL中添加一个会话ID参数来劫持会话,已经不太可能了。 不过,会话管理也需要注意,否则,也会出安全问题。

第一、就是Cookie的设置,Cookie中含有特别重要的信息,为了保护Cookie的安全HTTP也添加了很多保护措施,例如:添加了secure和httponly属性等,关于Cookie的安全需要关注一下几个属性,

属性名作用
secure

对于敏感信息,原则上不建议保存在cookie中的,但是,特殊情况下,必须放在cookie中,则使用该选项可以加密cookie的内容。不过,加密也只是在传输的过程中加密,保存在本地的cookie文件还是不加密的。

Httponly And Secure_jimmyleeee的博客-CSDN博客

httponly

一般的cookie对象,都可以通过document对象获得,从而可以在javascript中操作。为了保护cookie,现在浏览器在设置Cookie的时候一般都接受一个叫做HttpOnly的参数,一旦这个HttpOnly被设置,你在浏览器的document对象中就得不到Cookie对象了,也就看不到其中的信息。而浏览器在浏览的时候不会受到任何影响,因为Cookie会被浏览器发出去。

Httponly And Secure_jimmyleeee的博客-CSDN博客

domaindomain就表示Cookie所支持的域名,一个网站可能会有多个域名,一般建议尽量设置小一些。例如:a.test.com域名的网站设置Cookie时,如果设置为*.test.com,就会导致b.test.com域名的请求也会带上a.test.com的Cookie。
PathPath就表示Cookie所支持的路径,一个网站可能会有多个路径代表不同的因公时,一般建议尽量设置小一些。例如:www.test.com/a域名的网站设置Cookie时,如果设置为/时,就会导致www.test.com/b的请求也会带上www.test.com/a的Cookie。
Expire如果设置这个过期时间,预示着Cookie是persistent cookies,Cookie在过期时间之后才会无效。一般建议不设置时间,只是用session cookie。

Cookie中的会话ID带来的另外一个问题就是泄露服务器组件的信息,例如:PHPSESSID、JSESSIONID、CFTOKEN和ASP.NET_SessionId,通过会话ID的信息就可以知道后台是用什么技术包括:是用什么语言。因此,建议在配置重新设置会话ID的名字。

第二就是会话的有效性管理

????????一般一个页面在一定时间范围内如果没有任何操作,说明这个会话已经闲置太久,就可以考虑将此会话彻底清理掉,否则,会一直占用服务器资源,同时,也会增加会话被劫持的风险。

????????当一个用户在客户端点击【登出】时,表明这个会话已经不需要了。在渗透的过程中,还经常遇到一些会话登出之后,使用原来会话的Cookie依然可以进行操作,说明此会话没有被彻底登出。

????????例如,PHP语言登出时,要销毁会话,并且清除绘画中的信息:

if(isset($_GET['logout'])) {
    session_destroy();
    unset($_SESSION['username']);
}

????????Java语言需要调用session的invalidate才能彻底清除会话:

session.invalidate();

可能有的系统是通过Token来表示用户是否登录的,没有在会话中设置任何信息,只要有Token就认为是登录的。那么,这种情况也需要考虑在用户登出之后,把Token设置无效。

第三,为了保证Cookie信息的安全,不仅要在本地注意安全,也需要在传输过程中保证Cookie信息的安全,关于传输安全需要设置好:HSTS【应用安全系列之二十:HTTP协议安全_jimmyleeee的博客-CSDN博客】,同时也需要注意配置好Web服务器支持的协议的版本和安全协议支持的加密算法集,经常有些网站,在安全协议和安全加密套件的配置上不注意,是的网站支持了不安全的加密协议和加密套件,如下图,网站还配置使用了TLS1.0:

第四、需要注意的是XSS问题,当网站有XSS【应用安全系列之二:XSS_jimmyleeee的博客-CSDN博客】和CSRF【应用安全系列之十九:CSRF_jimmyleeee的博客-CSDN博客】等问题时,攻击者可以通过XSS获取会话的信息,然后,劫持会话;可以通过CSRF问题让用户在不知情的情况下,诱使用户点击,触发一些伪造的恶意的请求。

? ? ?随着web服务器中间件的更新换代,虽然很多关于会话管理的问题都已经在设计上避免了,但是,由会话造成的攻击依然很多,必须在服务器配置、安全协议的设置以及应用系统自身的防护上加强会话的保护。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:43:36  更:2022-04-14 23:44:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:49:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码