授权和认证开发方法

这里提供了有关如何在这里应用程序中实施身份验证和授权的方法:,这些指南将涵盖以下一般要点:

身份验证是通常通过初始登录并随後通过验证用户浏览器发出的每个HTTP请求上的唯一秘密代码来验证用户身份的过程。
授权是确保用户只能访问他们应该使用的资源的过程,通常基於根据商业逻辑定义的某些角色或风险等级。

##### 建议方法

  • 需要针对个资应用程序的多因子身份验证

    通过添加多层验证,我们可以确保用户的帐户不受损害,尤其是对於个资的应用程序和服务。
    这样可以确保在密码(最常见的身份验证初始密码)不足以破坏用户帐户的情况下。

    • 修正方法
      与这里上使用的适当身份提供者联系,并在需要时要求多因子认证。
    • 风险等级
  • 通过最小权限原则限制OAuth2范围

    当使用OAuth2客户端时,将为该客户端定义一个范围。
    此范围确定在通过auth提供程序执行身份验证之後,客户端可以访问哪些後端API。
    设置新的OAuth2客户端时,要求客户端的团队应确定他们需要访问哪些API/资料,并将范围限制为那些特定的API。

    限制我们API的范围是一种最佳做法,可以限制成功攻击的影响。
    同样,通常是使用给定范围进行身份验证的这里 ID用户,并且具有给定的访问代码(Token)将使用户直接访问API。
    由於这是公共可访问的,因此应注意用户不能访问个资的API,尤其是处理个人身份讯息(PII)的API。

    • 修正方法
      在需求阶段,确定OAuth2客户端需要哪些讯息,并将API限制为仅必要讯息。
      如果可能,请与auth提供程序一起构建自定义范围,以限制对更广泛的API的访问。
    • 风险等级
    • 参考资料
      https://tools.ietf.org/html/rfc6819#section-3.1.1
  • 代码(Token)寿命有限

    进行身份验证时,会使用各种代码(Token)来证明用户的身份。
    这通常是通过Session cookie或附加到用户帐户的访问代码(Token)进行的。
    这些代码(Token)应具有最短的生命周期,以平衡用户需求和安全性。
    代码(Token)在无限长的时间内无效,并且应在合理的时间范围内到期。

    这主要是深度防御措施,着重於在这些代码(Token)被泄露时限制攻击的影响。
    这也减少了结果应用程序的攻击面,在任何给定时间都减少了有效代码(Token)的数量。

    • 修正方法
      检查所有与身份验证相关的代码(Token),并检查其生存期。如果不确定,请联系安全部门以获取有关其使用寿命的建议。如果可能,请在合理使用范围内使用最短寿命。

    • 风险等级

  • 验证OAuth2重定向URI

    在执行OAuth2登录流程时,在使用auth提供程序进行身份验证之後,重定向URI用於将访问代码(Token)安全地发送到客户端Web应用程序。
    这是由客户端在OAuth2流中提供的。
    应该验证此URI,以确保它是OAuth2客户端使用的已知URI。

    当有效的重定向URI上存在打开的重定向时,这可以防止潜在的讯息泄露攻击。
    这导致用户的OAuth代码(Token)可能被泄漏,从而损害了他们的帐户。

    • 修正方法
      根据已知有效URI的白名单验证整个URI。
      避免使用正则表达式或子字符串匹配。
    • 问题范例:
        //好的范例:
        def validate_redirect_uri(redirect_uri):
        	if redirect_uri == "https://newservice/validate_oauth" :
        		return True;
        	return False;
        //不好的范例
        def validate_redirect_uri(redirect_uri):
        	if "newservice" in redirect_uri:
        		return True;
        	return False;
      
    • 风险等级
  • 验证OAuth2状态参数

    启动初始OAuth2流时,客户端可以选择提供状态参数。
    然後将此状态参数与授权一起发送回去,以便稍後在流程中由客户端进行验证。
    应在初始OAuth2请求时生成此状态参数,并在发生来自身份验证提供者的授权後对其进行存储以进行验证。

    这是为了确保OAuth2流由用户启动,并且不容易受到潜在CSRF(跨站请求伪造)的攻击。
    通过确保用户已启动OAuth2流,他们将在具有已知权限的帐户内执行操作。

    • 修正方法
      初始化OAuth2流时,生成一个加密安全的随机状态参数。
      当客户端通过重定向URI回调返回时,应对此进行验证。
      该参数仅对启动该参数的OAuth2流有效。
    • 风险等级
    • 参考资料
      https://tools.ietf.org/html/rfc6819#section-3.6

<<:  Day 31 Review security tools and features

>>:  Day9 练习java-二维阵列

[Day-04] - Spring Boot Starter 环境配置马上就上手

Abstract 我们已知有一套相当优秀及资源宽广的Spring Boot框架,但是要如何开始我们专...

Day13-元件渐变语动画

渐变transition 这边就像写css一样,只是要渐变的东西包在transition里面,并到c...

Day11 用python写UI-聊聊变数类别

今天要讲的是tkinter的变数类别,tkinter 的控制变数可以在某些控见执行的时候,更改内容,...

[DAY28]将Line讯息存入资料库(01)

#纪录主程序 def line_insert_record(record_list): #与post...

[Day 02] 在表情资料寻找邂逅是否搞错了甚麽 (Facial Expression Recognition)

表情资料集的介绍与下载 俗话说:「知己知彼,百战百胜」,这句话同样也适合用在资料科学上, 我们必须对...