首页 > 其他分享 >系统安全框架

系统安全框架

时间:2023-04-02 18:22:36浏览次数:32  
标签:系统安全 框架 用户 认证 登录 Token Session 服务器

1、系统安全框架 1.1 认证与授权   软件应用系统设计与开发过程中,必须要考虑系统的安全问题。软件应用系统安全主要包括认证(登录)和授权(权限管理)两部分,一般称为权限管理。   如果不借助第三方安全框架,开发者需要自己设计并实现认证和授权功能。一般的设计思路是:用户在登录页面输入用户名和密码进行登录操作,后端应用程序在收到页面传来的用户名和密码后,就去数据库中进行数据比对,来完成认证工作。登录成功后,还需要查询该用户的角色,再通过角色关联相应的权限,根据权限来判断该用户是否能进行某项操。   如果是 Web 项目,一般将用户及对应的角色、权限等信息放到 Session 会话中保存,这样当后端应用每接收一次请求,就可以使用拦截器或过滤器进行判断,判断该会话中是否保存用户的已登录信息。如果是登录状态,则再判断是否有权限访问相应的资源。   在以上过程中,开发者需要自行设计登录的处理、密码加密、Session 的维护、过滤器的设置、权限验证、权限的粒度划分等,开发任务比较繁琐。   当前,有一些优秀的第三方安全框架,它们将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限管理、加密(密码加密登录)、会话管理等功能,形成了一个通用的安全认证框架,帮助开发者解决这些通用性问题,让开发者更能专注于自身的业务逻辑。   1.2 常用安全框架 安全框架主要解决应用系统中的两类问题:认证和授权。 ⚫ 认证就是登录,即判断该用户是否是系统中的合法用户; ⚫ 授权就是权限设计和验证,即判断该用户是否具备访问系统中某些资源的权限。 当前,Spring Security 和 Shiro 是两个优秀的 Java 安全框架: ⚫ Spring Security:Spring 家族的一员,是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案。它利用了 Spring IOC 和 AOP 功能,为应用系统提供声明式访问控制功能,减少了为企业安全控制编写大量重复代码的工作; ⚫ Shiro 是由 Apache 软件基金会出品的 Java 安全管理框架,具有简单、功能强大的特点,在 Java 安全领域中应用广泛。   2、身份认证方式 2.1 Session-Cookie 认证方式   HTTP 是无状态协议,即协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,必须要重传,这样可能导致每次连接传送的数据量增大。HTTP无状态的特性严重阻碍了 Web 应用程序的实现和应用。Cookie 和 Session 就是为了支持客户端与服务器之间的有状态交互而设计的技术。   Session-Cookie 方式是开发 Web 应用时最常用的认证方式。 (1)用户浏览器向服务器发起认证请求,将用户名和密码发送给服务器; (2)服务器认证用户名和密码,若通过则创建一个 Session 对象,并将用户信息保存到 Session 中。Session 的信息可以是保存到服务器文件、共享外部存储、数据库等存储中,等下次请求时查询验证使用; (3)同时,服务器会将该 Session 的唯一标识 sessionID,返回给用户浏览器,并保存在 cookie 中; (4)用户请求其他页面时,浏览器会自动将用户的 cookie 携带上,并发起接口请求,服务端收到请求后,从 cookie 解析出 sessionID, 根据这个 sessionID 查询登录后并保存好的 session,若有则说明用户已登录,然后放行。   该方式是 Web 开发中最常用的认证方案,几乎所有的 Web 框架都默认集成了Session-Cookie 的认证方式。   2.1.1 Session 和 Cookie 区别 ⚫ 数据存放位置不同:Session 数据是存在服务器中的,cookie 数据存放在浏览器当中; ⚫ 安全程度不同:cookie 放在浏览器中不是很安全,session 放在服务器中,相对安全; ⚫ 性能使用程度不同:session 放在服务器上,访问增多会占用服务器的性能; ⚫ 数据存储大小不同:单个 cookie 保存的数据不能超过 4K,session 存储在服务端,根据服务器大小来定。   2.1.2 Session-Cookie 认证方式的缺点

 

2.2 Token 认证方式

  Token 即令牌,及确认身份的意思,服务端可以通过令牌来确认身份。和 Session相比,Token 是开发定义的,一般不存储在服务端,而且跨域处理较为方便,多台服务器之间可以共用一个 token,因此是不同系统交互、前后端分离架构中常用的认证方式。 Token 方式的认证流程如下: (1)用户使用用户名和密码登录,将用户名和密码发送给服务器; (2)服务器验证用户名和密码,若正确,则签发 token,返回给用户; (3)用户收到 token 后,将其存储起来,Web 服务一般为 localStrage 或 cookie; (4)用户请求其他资源页面时,会携带 token,一般放到 header 或参数中,发送给服务端; (5)服务器收到后,验证 token,判断用户的正确性。  

 

  当前,JWT(JSON Web Token)是最常用的一种 Token 认证方式,已成为 Token 认证的标准事实。   2.3 OAuth 方式   OAuth(Open Authorization)是一个开放标准,允许用户授权第三方网站访问他们存储在服务端的用户信息。常见的新浪、京东等使用的第三方登录机制就是 Auth 认证方式。OAuth 更像是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。   在单纯的前后端分离系统中,OAuth 并不是常用的方式,它更多的应用在不同系统之间的授权交互。   3、JWT 认证方式   JWT(JSON Web Token)方式将 Token 分段,使其可以保持少量数据,还增加了签名验证,确保了 token 的安全性。   3.1 JWT 的认证流程: 服务器生成一个 JSON 对象,发回给用户; 浏览器与服务器通信时,都要发回这个 JSON 对象,服务器依据这个对象来认定用户身份; 为了防止用户篡改数据,服务器在生成这个对象时,会加上签名。   3.2 JWT 的构成

 

 

 

 

 

 

 

 

 

 

标签:系统安全,框架,用户,认证,登录,Token,Session,服务器
From: https://www.cnblogs.com/qiqi-yi/p/17280946.html

相关文章

  • pytest自动化框架安装和使用
    1、官网:https://pypi.org/project/pytest/,下载  2、命令窗口执行:pipinstall pytest-7.2.2-py3-none-any.whl(同理删除:pipuninstallpytest-7.2.2-py3-none-any.whl) 3、进入 PyCharm/File->Preference/Settings->Tools->PythonIntegratedTools,点击Defaul......
  • 极至框架Jz学习笔记
    设计的数据库表名:Select*fromjzmetadata_dataentity数据库表列名:Select*fromjzmetadata_dataentitycol    ......
  • Flask框架入门
    Flask框架也是Python的同步web框架,Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架顺便总结一下Python的同步web框架有Django(大而全,适合大型网站开发)、Flask(小而精,适合小型网站开发);异步web框架有fastapi和sanic。接下来咱详细的研究一下flas......
  • 【v4l2】Linux多媒体框架 - v4l2 core详解
    简介V4L2是Videoforlinux2的简称,是Linux中关于视频设备的内核驱动框架。常用结构体:定义在include/linux/videodev2.hstructv4l2_requestbuffers//申请帧缓冲,对应命令VIDIOC_REQBUFSstructv4l2_capability//视频设备的功能,对应命令VIDIOC_QUERYCAPstr......
  • 我如何回答编码面试问题的框架
    我讨厌编码面试已经不是什么秘密了。他们是一种糟糕的招聘方式并且容易出现误报(也就是不必要地拒绝优秀候选人)。对于大多数公司来说,提出白板式的问题并不符合他们的最大利益。不幸的是,它们是行业标准。作为一名软件工程师,您必须在求职过程中回答白板上的问题。所以,这是我如何擅......
  • 项目一众筹网07_01_SpringSecurity框架简介和用法、SpringSecurity负责的是 权限验证
    项目一众筹网07_01_SpringSecurity文章目录项目一众筹网07_01_SpringSecurity01简介SpringSecurity负责的是权限验证02-SpringSecurity简介03-Spring的注解模式maven引入Spring环境04-准备测试环境05-加入SpringSecurity环境06-实验1-放行首页和静态资源(下一篇)01简介现在主流的权......
  • 项目一众筹网05_0项目阶段性总结,SSM框架_项目开发注意事项,,不要随意动框架预定好的结构
    系列文章目录文章目录系列文章目录一、框架搭建好之后,项目开发阶段,各就各位,尽量不要新建包名二、mybatis里面sql结束不要带分号三:实体的属性名最好跟数据库的字段保持一模一样,这样mybatis才不会因为大小写什么的而识别不了四:不是主键可以添加唯一约束吗五、idea里面的配置,需要注意......
  • SpringMVC 框架的介绍
    Java早期的MVC模型主要使用Servlet组件。用户的请求首先到达Servlet,Servlet作为控制器接收请求,然后调度JavaBean读写数据库的数据,最后将结果放到jsp中展现给用户。但是,Servlet组件功能有限,而且与jsp的耦合度过高,使得基于Servlet组件的MVC架构开发很不方便......
  • Flask框架1
    今日内容概要flask和其他pythonweb框架介绍flask快速使用登陆显示用户信息小案例配置文件方式路由系统今日内容概要flask和其他pythonweb框架介绍pythonweb框架的本质都一样1.同步框架 django大而全内置的app多第三方app也多 flask小而精没有过多的内置组件......
  • Spring 框架的事务管理
    1、事务的概念事务是一个不可分隔的工作单元,其中的SQL语句要么全都执行,要么全都不执行,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。在企业级应用程序开发中,事务管理是必不可少的技术,用来确保数据的完整性和一致性。事务的四个特性:ACID......