安全编码实践之三:身份验证和会话管理防御

声明:本文由Bypass整理并翻译,仅用于安全研究和学习之用。

文章来源:https://medium.com/bugbountywriteup/how-to-write-secure-code-d4823bc2e86d

如何编写安全代码?保护自己免受破碎的身份验证和会话管理!

需要安全代码?

我一直致力于安全编码实践,并试图尽可能多地学习基本要点。在过去的几年里,我已经意识到一个小小的漏洞在普通人的生活中可能造成的伤害。像WannaCry和Petya勒索软件这样的网络攻击在几个遭受其原因的人心目中是相当新鲜的。

研究人员仍然可以在网络应用程序和其他领域中发现另一个非常严重的错误。除非程序员自己意识到他们正在编写的代码,否则这种趋势不会下降。代码不仅应该能够执行它应该执行的预期工作,而且还能够抵御任何恶意负载和攻击场景。实现这一目标的最佳方式是能够在编码和安全社区之间建立协同作用,并相互帮助。

我们来挖掘吧!

那么,这篇特别的文章“如何编写安全代码?”专注于身份验证和会话管理问题。

身份验证和会话管理相关的应用程序功能存在安全缺陷,允许攻击者破坏密码,密钥,会话令牌或利用其他实现缺陷来承担其他用户的身份。

在本文中,我将介绍几种不同类型的攻击和方法,您可以使用它们来防止它们: -

1.硬编码登录凭据

硬编码登录凭据是程序员可以犯的最大错误之一,因为它与在银盘上为黑客提供凭证一样好。敏感数据永远不应该是硬编码的。

不安全的代码 - 硬编码的信用卡

上面的代码是其中一个示例,其中登录凭证在程序员编写的代码中进行了硬编码。

虽然下面的代码是一个示例,其中凭证在程序中没有硬编码,使得它比信用卡硬编码的指数更加安全。

安全代码 - 信用证不是硬编码的

这种小差异会对应用程序的安全性产生巨大影响。

2. Cookie操作

随着越来越多的身份验证过程通过检查用户提供的cookie细节来执行,Cookie操作正在成为当今最危险的攻击之一。

攻击者正在寻找方法来打破并弄清楚网络应用程序如何分配cookie,以便他们可以操纵它们并像其他用户进行帐户接管一样构成。

让我演示攻击者如何利用分配给用户的弱cookie或者cookie保持不变。

 这边的图像是一个登录门户,我们将进行攻击并显示弱cookie实现的问题。

一旦我们登录到应用程序,我们就会拦截Burp-Suite中的流量,以查看它以及传递给用户身份验证我们的cookie。

Cookie细节

上图显示了我们尝试登录时分配的四个“Set-Cookie”参数。这四个不同的cookie登录,PHPSESSID,显示提示,用户名和uid。我们怀疑uid对每个用户都是唯一的。所以我们继续篡改uid以检查我们是否可以访问其他人的帐户。

修改cookie

要捕获cookie的值,我们使用浏览器中存在的Cookie Manager扩展,然后传递请求。我们将“uid”从24改为12,如下所示。

修改过的cookie

一旦我们修改了cookie值,我们就可以看到,当我们访问其他用户的帐户时,我们已经执行了帐户接管攻击。

这次攻击经历的原因是,在用户登录之前和之后,PHPSESSID根本没有被修改,因此“uid”是识别哪个用户刚刚登录到他们帐户的唯一决定因素。正如我们上面所看到的那样,很容易被操纵,允许帐户接管。

为了避免这种情况发生,我们需要在登录尝试后重新分配cookie,我们需要记住,cookie也必须是唯一的。以下是如何执行以下操作的想法。

//问题是正在使用相同的会话对象,因此获取当前会话
HttpSession before_login = request.getSession();
//使该会话无效
before_login.invalidate();
//生成一个新会话,新的JSESSIONID 
HttpSession after_login = request .getSession(true);

上面的代码用于在登录前后更改SESSIONID cookie。

3.通过Web服务进行用户枚举

枚举问题非常严重,因为它可以让攻击者弄清楚应用程序中存在的用户的用户名/电子邮件ID,以下细节可以在以后用于暴力攻击。

我们使用Widsler扩展并利用它的“getuser”功能对Burp-Suite进行此攻击。因此,当我们输入有效的用户名时,我们尝试从系统收集响应,然后我们输入一个不是用户名的随机字符串,然后检查响应。我们可以在下面的图像中看到相应的响应。

用户不存在

上面的图像是我们在具有特定用户名的用户不存在时收到的请求和响应。我们在转发器中发送了请求查询以检查响应。

 

 用户确实存在

上面的图像是我们收到的用户确实存在的条件的请求和响应。我们在转发器中发送了请求查询以检查响应,并在此次获得了不同的响应。这给了我们一个想法,我们可以根据我们收到的响应来枚举用户。

因此,我们在入侵者选项卡中传递请求,然后执行蛮力来检查使用该应用程序的各个用户。

枚举的用户名

这里的主要问题是开发人员实际上在响应查询中放了太多细节。正如在这次攻击中我们可以清楚地看到,由于响应中的信息太多,我们可以弄清楚哪些用户具有相应的用户名,哪些用户没有。我们需要制作一些标准化的消息,以便攻击者不能仅仅使用一些简单的枚举技术。

4.暴力攻击

这是攻击者通过前一种方法枚举用户及其用户名后执行的下一阶段攻击。

 

旁边的图像显示我们已经枚举用户的登录页面,需要执行暴力攻击才能知道这些用户的登录凭据。

因此,当我们尝试登录时,我们拦截Burp-Suite中的流量并捕获请求数据包并将其发送给入侵者。

 

请求查询

现在,我们已经枚举了用户名,我们执行命中和尝试,暴力攻击。我们从互联网上获取一组常用密码并运行我们的攻击以找出相应的密码。

通过Burp-Suite进行蛮力攻击

在任何情况下都绝不允许暴力进攻。应始终存在帐户锁定功能,因为它可以使应用程序免于暴力破解并喷出用户凭据。蛮力也可以通过允许用户不使用字典单词,使用一定长度的密码更好地要求他们使用密码来抵消。在存储之前,应始终对用户的密码进行哈希处理,使用带哈希值的盐也非常重要。

安全防御

我们可以采取以下预防措施,并在尝试与身份验证和会话管理问题作斗争时保留这些心理记录。

认证失败
  • 提示错误/成功消息
  • 永远不要硬编码凭证
  • 密码策略执行(成熟,强度,盐的哈希)
会话管理
  • 令牌的不可预测性(即安全随机性)
  • 到期策略,登录/注销重置
  • 使用强加密
  • 复杂的Cookie安全性

 

转载于:https://www.cnblogs.com/xiaozi/p/10676451.html

C++继承与多态 - 继承多态原理01 C++继承多态原理讲解 阅读详情

相关推荐

【Arduino】入门篇——交通信号灯

模拟交通信号灯一、实验目的二、实验材料三、电路图四、实验过程五、代码块六、实验结果 一、实验目的 我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?交通灯包括三种个不同颜色的灯:红灯、黄灯和绿灯。 每个路口的红绿灯切换的时间并不是相同,这个是根据不同路口的车流情况来设定的,下面就是模仿交通灯的一个实验 二...

漠宸离若的博客 1万+

信息安全架构技术关注点-认证与会话管理

认证与会话管理 建立用户账号,用户标识为唯一。 至少通过密码的身份鉴别技术,密码需强制具备一定的长度、复杂度,采用加密(加盐)保存,密码需强制定期修改。 禁止用户重新注册。 专用的登录模块对用户身份进行校验;通过证书登录;限制登录失败次数;登录超时限制。 单因素认证 强密码规则及校验 密码存储采用不可逆的加密算法(MD5、SHA-1)+ S alt,使用方法如MD5(username...

jiangbb8686的博客 373

AWS入门实践-如何在AWS云上创建一个内外网隔离的生产环境

在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。

weixin_39108752的博客 2994

安全漏洞——失效身份认证和会话管理(二)

一、失效身份认证和会话管理漏洞 1.定义 2.名词解释 3.造成缺陷原因 4.举例 5.防止攻击手段 一、失效身份认证和会话管理漏洞 1.定义:应用程序中与身份验证或者会话相关的功能未正确实现,导致攻击者可以破坏密码、密钥、会话令牌或者利用其他缺陷来假冒用户的身份,达到攻击的目的。 2.名词解释: Session 服务器端记录用户的信息,当用户完成身份认证后,存储所需要的用户资料。 - Cookie 服务器端发送,存储在客户端。在用户访问网站的时候建立(登陆),用于跟踪用户在网站中的活动,每次请求和客.

weixin_41367084的博客 2967

VINS-Fusion实战:从零搭建无人机视觉SLAM系统(附ROS配置全流程)

本文详细介绍了如何从零开始为无人机搭建基于VINS-Fusion的视觉SLAM系统。内容涵盖硬件选型(重点推荐双目相机与IMU搭配)、ROS环境配置、传感器标定、核心参数调优以及实际飞行测试与问题排解全流程,旨在帮助开发者实现稳定、精确的无人机自主定位与导航。

wasm7browser的博客 213

【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

weixin_51692487的博客 1524

失效的身份认证和会话管理

目录身份认证和会话管理失效的身份认证和会话管理原理危害案例如何判断如何防范1、区分公共区域和受限区域2、对最终用户帐户使用帐户锁定策略3、支持密码有效期4、能够禁用帐户5、不要存储用户密码6、要求使用强密码7、不要在网络上以纯文本形式发送密码8、保护身份验证 Cookie9、使用 SSL 保护会话身份验证 Cookie10、对身份验证 cookie 的内容进行加密11、限制会话寿命12、避免未经授...

whoim_i的博客 1万+

【部署】Docker部署OpenClaw及常见问题解决(win11)

给AI单独开一个隔离的小容器,AI执行所有命令、下载文件都在这个小盒子里,就算AI被诱导执行危险命令,也不会影响你Win11本机的文件和系统,是必开的安全功能。Docker容器里的OAuth回调,会尝试在你Win11本机的1455端口捕获认证信息,但容器和Win11本机的网络隔离,导致浏览器访问不到这个回调地址。「挂载」就是把你Win11本机的文件夹,共享给容器里的「虚拟小电脑」,两边都能读写文件,比如你想让AI操作你D盘里的代码文件,就需要挂载。

海兰 4696

2023_OWASP TOP10_漏洞详情

OWASP TOP 10 漏洞讲解。、失效的身份认证和会话管理。、使用含有已知漏洞的组件。、直接引用不安全的对象。、缺少功能级的访问控制。、未验证的重定向和转发。

qq_44484541的博客 9418

【数据同化第一期】基本概念介绍

【数据同化第一期】基本概念介绍

WW、forever的博客 1902

数据挖掘实战-基于KMeans算法对超市客户进行聚类分群

本实验基于KMeans算法对超市客户进行了聚类分群。通过对客户购物数据进行聚类,我们成功将客户分为不同的群体。每个群体代表了具有相似购物行为和偏好的客户群体。通过实验结果,我们发现了客户群体之间的明显差异和共性。不同群体的客户在购买频率、购物金额和购买种类等方面有所区别。这为超市提供了重要的市场细分信息,帮助超市经营者更好地了解不同客户群体的需求和喜好,制定有针对性的营销策略和商品推荐,提高客户满意度和忠诚度。此外,实验还揭示了超市客户的购物行为规律,为超市优化商品陈列和促销策略提供了指导。

m0_64336780的博客 2万+

每个开发人员都应该知道的 10 大安全编码实践

所以你有它。这是每个开发人员都应该知道的十种安全编码实践。它们一起可以减少错误并保护你的系统免受恶意活动的侵害。通过遵循这些约定,你可以帮助确保代码安全、保护你的公司并减少被攻击者利用的机会。

努力是为了站在万人之中,成为别人的光 9732

Python实现多元线性回归(Multiple Linear Regression)

多元线性回归是一种用于建立多个自变量与因变量之间关系的统计学方法。在多元线性回归中,我们可以通过多个自变量来预测一个因变量的值。每个自变量对因变量的影响可以用回归系数来表示。

优快云 精品推荐 4327

前端安全:XSS攻击与防御策略

XSS(Cross-Site Scripting)攻击是前端安全中的一个重要问题,它发生在攻击者能够注入恶意脚本到网页中,这些脚本在用户浏览器中执行时可以获取用户的敏感信息,例如会话令牌、个人信息等。

天涯学馆 2427

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java语言的安全编码

随着互联网和信息技术的迅猛发展,软件安全问题愈发受到重视。特别是在Java语言的开发环境中,如何安全地进行编码,防止潜在的安全漏洞,已经成为了开发者必须直面的重要课题。本文将从Java语言的特点、常见的安全漏洞、编码规范、安全实践等多个方面探讨如何实现安全编码。

2501_91009330的博客 643

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何把 Blender 接入 AI:BlenderMCP 安装与使用完整指南

BlenderMCP 是一个把 Blender 3D 与 Claude 等大模型客户端连接起来的社区项目,它基于 MCP(模型上下文协议)工作。装好之后,你用一句话就能驱动屏幕上打开的 Blender:创建和调整 3D 对象、改材质、下载资产、截图看场景,甚至用文字直接生成 3D 模型。这篇指南带你完成从安装、配对到实际使用的全部步骤。 ## 它帮你省掉哪些事 如果你用过 Blender,大概

gitblog_00761的博客 961

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【PHP安全编程实战指南】:揭秘9大常见漏洞及防御策略

掌握PHP安全编程关键技巧,有效防范SQL注入、XSS攻击等9大常见漏洞。涵盖Web开发中的真实应用场景,提供实用防御方案与代码示例,提升系统安全性。开发者必备实战指南,值得收藏。

LearnPlex的博客 627

tech-interview-for-developer:安全编码实践-OWASPTop10防护

在现代Web应用开发中,安全不再是可选项,而是必须内置的核心特性。OWASP(Open Web Application Security Project)Top 10代表了Web应用程序中最常见、最危险的十大安全风险。掌握这些风险的防护方法,是每一位开发者的必备技能。 > ???? **OWASP Top 10 2021版风险统计** > | 风险类别 | 出现频率 | 影响程度 | 检测难度 | ...

gitblog_00301的博客 1073

安全编码

安全编码规范基于OWASP Top 10(2010) ------The Ten Most Critical Web Application Security Risks 整理,它们列出如下: A1.注入(Injection) A2.跨站脚本(Cross-Site Scripting(XSS)) A3.失效的身份认证和会话管理(Broken Authentication and Sessio

M风景的技术博客 2247

从代码到生产:Java开发者必须掌握的7种安全防御技术

掌握Java安全编码:常见漏洞与防御,有效应对SQL注入、XSS等风险。涵盖输入验证、安全配置、身份认证等7大技术,适用于Web应用开发与企业级系统。提升代码安全性,降低生产环境威胁,值得收藏。

PoliVein的博客 1017

(Java 24安全编码实战手册):从入门到精通的9步防护体系

掌握Java 24安全编码规范,构建高安全应用的9步防护体系,涵盖身份验证、输入校验、加密处理等实战方法,适用于企业级开发与云原生场景。系统化规避常见漏洞,提升代码健壮性,值得收藏。

SimCompile的博客 300

NiterForum安全机制解析:防止XSS攻击与CSRF防护最佳实践

NiterForum作为一款基于Springboot/MyBatis/Maven/MySQL后端和Thymeleaf/Layui前端的开源论坛程序,为用户提供了安全可靠的社区交流平台。本文将深入解析NiterForum的安全机制,重点介绍其防止XSS攻击与CSRF防护的最佳实践,帮助开发者和管理员更好地理解和应用这些安全措施。 ## XSS攻击防护:多层过滤确保用户输入安全 XSS(跨站脚本)

gitblog_01026的博客 752

OWASP TOP 10漏洞的原理 和攻击方式以及防御方法

XML外部实体漏洞(XML External Entities (XXE)) 原理:应用程序解析XML时,未正确处理外部实体,导致攻击者可以访问系统文件、执行命令等。安全配置错误漏洞(Security Misconfiguration) 原理:应用程序或其环境未正确配置,导致攻击者可以访问敏感信息、执行未经授权的操作等。总之,防范OWASP TOP 10漏洞的最佳方法是采取多层次的安全措施,包括对应用程序进行安全编码、安全测试和安全配置等,以及对环境进行最小化权限、安全配置和安全监控等。

m0_56153073的博客 7376
上一篇: 安全编码实践之二:跨站脚本攻击防御
下一篇: 如何查看github排行热度
an0708
博客等级 码龄12年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值