首页 > 其他分享 >从0开始构建一个Oauth2Server服务 <15> 安全问题

从0开始构建一个Oauth2Server服务 <15> 安全问题

时间:2023-04-29 11:02:31浏览次数:46  
标签:重定向 Attacker URL 应用程序 Oauth2Server 安全 Attack 构建 授权

从0开始构建一个Oauth2Server服务 <15> 安全问题_应用程序

安全问题

以下是构建授权服务器时应考虑的一些已知问题。

网络钓鱼Attack

针对 OAuth 服务器的一种潜在Attack是网络钓鱼Attack。这是Attack者创建一个看起来与服务授权页面相同的网页的地方,该页面通常包含用户名和密码字段。然后,Accacker可以通过各种手段诱骗用户访问该页面。除非用户可以检查浏览器的地址栏,否则该页面可能看起来与真正的授权页面完全相同,并且用户可以输入他们的用户名和密码。

Attacker试图诱骗用户访问假冒服务器的一种方法是将此网络钓鱼页面嵌入到本机应用程序的嵌入式 Web 视图中。由于嵌入式 Web 视图不显示地址栏,因此用户无法通过视觉确认他们访问的是合法站点。不幸的是,这在移动应用程序中很常见,而且开发人员通常希望通过在整个登录过程中将用户留在应用程序中来提供更好的用户体验。一些 OAuth 提供商鼓励第三方应用程序打开 Web 浏览器或启动提供商的本机应用程序,而不是允许它们在 Web 视图中嵌入授权页面。

对策

确保通过 https 提供授权服务器以避免 DNS 欺骗。

授权服务器应该让开发人员了解网络钓鱼Attack的风险,并可以采取措施防止页面嵌入本机应用程序或 iframe 中。

应该对用户进行有关网络钓鱼Attack的危险的教育,并应向他们传授最佳实践,例如仅访问他们信任的应用程序,并定期查看他们已授权的应用程序列表以撤销对他们不再使用的应用程序的访问权限

该服务可能希望在允许其他用户使用该应用程序之前验证第三方应用程序。Instagram 和 Dropbox 等服务目前就是这样做的,在最初创建应用程序时,该应用程序只能由开发人员或其他列入白名单的用户帐户使用。应用程序提交审批和审核后,即可供服务的整个用户群使用。这使服务有机会检查应用程序如何与服务交互。

点击劫持

在点击劫持Attack中,Attack者创建一个恶意网站,在Attacer网页上方的透明 iframe 中加载授权服务器 URL。Attacker的网页堆叠在 iframe 下面,并且有一些看起来无害的按钮或链接,非常小心地放置在授权服务器的确认按钮的正下方。当用户单击具有误导性的可见按钮时,他们实际上是在单击授权页面上的不可见按钮,从而授予对Attacker应用程序的访问权限。这允许Attacker在用户不知情的情况下诱骗用户授予访问权限。

对策

通过确保授权 URL 始终直接加载到本机浏览器中,而不是嵌入到 iframe 中,可以防止这种Attack。较新的浏览器可以让授权服务器设置 HTTP 标头,X-Frame-Options而较旧的浏览器可以使用常见的 Javascript “frame-busting”技术。

重定向 URL 操作

Attacker可以使用属于已知良好应用程序的客户端 ID 构造授权 URL,但将重定向 URL 设置为Attacker控制下的 URL。如果授权服务器不验证重定向 URL,并且Attacker使用“令牌”响应类型,则用户将返回到Attacker的应用程序,URL 中包含访问令牌。如果客户端是公共客户端,并且Attacker拦截了授权码,那么Attacker也可以用授权码交换访问令牌。

另一种类似的Attack是Attacker可以欺骗用户的 DNS,并且注册的重定向不是 https URL。这将允许Attacker伪装成有效的重定向 URL,并以此方式窃取访问令牌。

“开放重定向”Attack是指授权服务器不需要重定向 URL 的精确匹配,而是允许Attacker构建将重定向到Attacker网站的 URL。无论这最终是否被用于窃取授权码或访问令牌,这也是一种危险,因为它可用于发起其他不相关的Attack。有关开放重定向Attack的更多详细信息,请访问https://oauth.net/advisories/2014-1-covert-redirect/。

对策

授权服务器必须要求应用程序注册一个或多个重定向 URL,并且仅重定向到与先前注册的 URL 完全匹配的位置。

授权服务器还应该要求所有重定向 URL 都是 https。由于这有时会成为开发过程中的负担,因此在应用程序“开发中”时允许非 https 重定向 URL 并且只能由开发人员访问,然后要求将重定向 URL 更改为 https 也是可以接受的应用程序发布并可供其他用户使用之前的 URL。

从0开始构建一个Oauth2Server服务 <15> 安全问题_重定向_02

标签:重定向,Attacker,URL,应用程序,Oauth2Server,安全,Attack,构建,授权
From: https://blog.51cto.com/demo007x/6236661

相关文章

  • 使用fpm 构建一个kernel module rpm包
    昨天参考社区的示例,开发了一个简单的kernel模块,尽管我们可以通过insmod进行模块安装,但是对于实际的分发是很不方便的比较推荐的做法是制作一个rpm包,方便模块的分发以及共享一些问题模块的安装位置一般我们外部开发的模块都在/lib/modules/${uname}\extra目录下,之后需要......
  • 构建之法读书笔记-4月
    《构建之法》是一本由丹尼尔·布鲁斯坦所著的研究人类思维方式的书籍。它探讨了构建和创新的过程,以及我们如何利用这些过程来改善我们的生活和工作。在全书中,布鲁斯坦提出了一种三个阶段的构建模型,分别是发现、抽象和建立。他指出这三个阶段不仅是构建过程的必要步骤,而且在任何......
  • 构建之法 阅读笔记04
    第十一章软件设计与实现11.2图形建模和分析方法思维导图、实体关系图、UseCaseDiagram11.3其他设计方法形式化的方法、文学化编程11.5开发阶段的日常管理第十二章用户体验12.1用户体验的要素用户的第一印象从用户的角度考虑问题软件服务始终都要记住用户的选择(......
  • HashMap为什么存在线程不安全呢?
    关注Java后端技术栈“回复“面试”获取最新资料本文主要探讨下HashMap在多线程环境下容易出现哪些问题,深层次理解其中的HashMap。我们都知道HashMap是线程不安全的,但是HashMap在咱们日常工作中使用频率在所有map中确实属于比较高的。因为它可以满足我们大多数的场景了。上面展示了......
  • Linux kernel 模块开发&构建学习
    主要是学习下kernel模块的玩法,代码来自社区简单kernel代码hello_world.c#include<linux/init.h>#include<linux/module.h>MODULE_LICENSE("DualBSD/GPL");staticinthello_init(void){printk(KERN_ALERT"Hello,world\n");......
  • 防灾减灾救灾,生命通道保障安全
    在自然灾害频发的今天,如何保障人们的生命安全成为了一个重要问题。而建立生命通道则是一种有效的方式。生命通道是指在紧急情况下,为了保障人们尽快逃离危险区域而设置的一条安全通道。因此,在防灾减灾救灾过程中,确保安全通道的存在和可用性至关重要。第一,什么是生命通道?生命通道是指......
  • 如何避免跨越红线?——安全管理的重要性
    在现代社会中,安全管理已经成为了一个非常重要的话题。尤其是在一些危险行业中,如建筑、化工等领域,安全管理更是至关重要。然而,很多人并不知道如何有效地避免跨越红线,从而导致了许多不必要的安全事故。因此,如何避免跨越红线成为了每个人都应该关注的问题。首先,要明确什么是“红线”。......
  • 谈剑峰:把信息安全核心技术掌握在中国人自己手中
    http://www.rmzxb.com.cn/c/2017-06-01/1567122.shtml?n2m=1 谈剑锋,高级工程师[88],无党派人士[87]。第十三届全国政协委员[10]、第十三届上海市政协常委[30][34],第五空间信息科技研究院院长[15],上海市信息安全行业协会名誉会长[10],是信息安全及数据安全领域资深......
  • 医院故障报修系统,为医疗安全保驾护航
    医院故障报修系统为提高医院后勤管理水平、提升服务能力,切实保障医院医教研工作顺利开展,不断改善医护人员工作环境,提升患者就诊体验,医院后勤运维中心持续推进后勤运维管理平台建设,为医疗安全保驾护航!医院故障报修系统针对医院出现的这种问题,结合报修人、维修师傅(技术员)、管理员的......
  • web安全基础-渗透相关字段
    1、Set-Cookie和cookies2、csp3、x-frame-option4、x-xss-frame5、location6、referer和origin7、user-agent、xff作为sql注入参数点、收集用户信息8、server、x-powered-for收集服务端信息9、cors......