WEB安全
文章平均质量分 60
jinyangjie0
学如逆水行舟,不进则退
展开
-
WEB安全(十七)跨域单点登录的实现
单点登录的核心思路是客户端存储AuthToken,服务端存储登录信息。由于客户端将AuthToken存储在Cookie中,所以要解决Cookie的跨域读写问题。回顾Cookie的路径(path)和域(domain)cookie路径cookie 一般都是由于用户访问页面而被创建的,可是并不是只有在创建 cookie 的页面才可以访问这个cookie。在默认情况下,出于安全方面的考虑,只有与创建 cookie 的页面处于同一个目录或在创建cookie页面的子目录下的网页才可以访问。那么此时如果希望其父级或原创 2022-02-18 22:40:00 · 3726 阅读 · 0 评论 -
WEB安全(十六)单点登录的基本实现
概述单点登录(SingleSign-On,SSO)是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次,就可以访问多个系统,不需要记忆多个口令密码。单点登录使用户可以快速访问网络,从而提高工作效率,同时也能帮助提高系统的安全性。单点登录 与 单点登出类似于Session的思路,需要将服务器生成的SessionId存储在服务器内存中,登录验证通过后,返回SessionId原创 2022-02-18 22:12:40 · 3325 阅读 · 0 评论 -
WEB安全(十五)如何防止XSS攻击
一、什么是XSS攻击**XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。**XSS的重点不在于跨站点,而在于脚本的执行。那么XSS的原理是:恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。二、防止XSS攻击1、X-XSS-Protection设置目前该属性被所有的主流浏览器默认开启XSS保护。该参数是设置在响应头中目的是用来防范XSS攻击的。它有如下几种配置原创 2022-02-17 22:44:49 · 5614 阅读 · 0 评论 -
WEB安全(十四)如何防止SQL注入
一、什么是SQL注入所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。例如在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,这类表单特别容易受到SQL注入式攻击。还有mybatis框架作为一款半自动化的持久层框架,其sql语句都要我们自己来手动编写,这个时候需要防止sql注入。二、SQL注入的例子登录页面,输入账号密码验证登录,后台SQL简化(为演示方便,去掉密码的加密过程):SELECT * FROM原创 2022-02-17 22:35:57 · 2336 阅读 · 0 评论 -
WEB安全(十三)Token认证的优势与劣势
一、优势token 相对于 Cookie + Session 的优势,主要有下面四个:1、无状态token 自身包含了身份验证所需要的所有信息,使得我们的服务器不需要存储 Session 信息,这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。2、防止CSRF 攻击CSRF(Cross Site Request Forgery) 一般被翻译为 跨站请求伪造,属于网络攻击领域范围。构成这个攻击的原因,就在于 Cookie + Session 的鉴权方式中,鉴权数据(cookie 中的 ses原创 2022-02-17 22:05:46 · 4432 阅读 · 0 评论 -
WEB安全(十二)token的续签问题-即动态刷新token,避免用户经常重新登录
token有效期一般都设置得很短,那么token过期后如何动态刷新token,避免用户经常重新登录呢?来看个具体需求:超过2个小时后,用户没有请求,则需要重新登录。这个需求一般有两种实现方式。方式一 每次请求都返回新 token假设一个 token 的签发时间为 12:00,需求为 2h 未进行请求即过期。则设置有效期 2h,那么每次请求都会把一个 token 换成一个新 token。如果 2h 没有进行请求,那么上一次请求的到的 token 就会过期,需要重新登录。不断签就能一直使用下去。这种原创 2022-02-16 22:33:19 · 10662 阅读 · 1 评论 -
WEB安全(十一)退出登录场景下如何使token失效
使用token做认证授权时,会发现注销登录等场景下token还有效。因为token不同于Session认证方式——用户退出登录时,服务端删除对应的Session记录即可。如果不引入其他机制,则退出登录时,token仍有效,即仍是登录状态,直到token有效时间到。下面介绍几个方案:1、直接从客户端移除token显然,这对服务端的安全性没有任何帮助,但是这的确使客户端退出登录,而且通过删除token来阻止攻击者,因为他们必须在注销之前窃取token。2、创建token黑名单可以维护一份token黑名原创 2022-02-16 22:15:39 · 6058 阅读 · 3 评论 -
WEB安全(十)什么是OAuth 2.0?
一、概述OAuth 2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。以微信的场景为例。微信储存了我的好友信息,第三方应用要获取这些信息,就必须经过微信的认证授权,请求跳转到微信,微信用户本人同意授权第三方应用,获取好友信息。简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。二、令牌与密码令牌(token)与密码(password)的作用是一样的,都可以进原创 2022-02-15 22:57:27 · 473 阅读 · 0 评论 -
WEB安全(九)什么是JWT?
一、概述JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。使用起来就是,由服务端根据规范生成一个令牌(token),并且发放给客户端。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。作用:通过token来代表用户身份。与使用session保持登录状态不同的是,JWT不需要保存认证记录,只需保存秘钥。二、JWT的构成JWT是由三段信息构成的,将这三段信息文本用点号.链接一起就构成了Jwt字符串。原创 2022-02-15 22:39:33 · 284 阅读 · 0 评论 -
WEB安全(八)什么是CSRF攻击?为什么说Token可以防止CSRF攻击?
CSRF攻击概述**CSRF(Cross Site Request Forgery)**是 跨站请求伪造 。Cookie 有一个过期时间,在这段时间内,Cookie 是存储在客户端的,当再次访问相同的网站时,浏览器会自动在 HTTP 请求中自动带上该网站用户登录后的 CookieCSRF 攻击也正是利用这点,借用用户的 Cookie,去执行非用户本意的操作。举个例子:小明登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接原创 2022-02-14 20:23:58 · 6689 阅读 · 8 评论 -
WEB安全(七)Session-Cookie 方案进行身份验证的具体过程
概述每一次web请求,其实是通过sessionId来标识请求会话的。1、用户端成功请求登录接口并且验证身份通过时,服务端记录该次session信息,并把seesionId返回给用户端,用户端将该信息存入cookie。2、当同个用户再发起新的请求时,会把sessionId带上,服务端通过对比已有session信息,可识别用户身份。更详细的描述过程1、用户向服务器发送用户名、密码、验证码用于登陆系统。2、服务器验证通过后,服务器为用户创建一个 Session,并将 Session 信息存储起来。3原创 2022-02-14 19:55:17 · 1167 阅读 · 0 评论 -
WEB安全(六)Session的使用、Session与Cookie的区别
Session是会话,是用在服务端记录用户信息的数据结构。Session的使用1、获取Session对象 HttpSession s = request.getSession(boolean flag);注:HttpSession是一个接口。当flag为true时,根据请求中的SessionId查找对应Session对象,不存在则返回新建Session对象。当flag为false时,同样根据请求中的SessionId查找对应Session对象,不存在则返回null。2、常用方法绑定数据原创 2022-02-13 17:35:13 · 663 阅读 · 0 评论 -
WEB安全(五)Session是什么?为什么需要Session?
Session是什么 Session是会话的意思,一般用在服务端记录用户信息。它的出现弥补了HTTP是无状态协议而导致服务不能标识用户的缺点。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。为什么需要session 谈及session一般是在web应用的背景之下,我们知道web应用是基于HTTP协议的,而HTTP协议恰恰是一种无状态协议。也就是原创 2022-02-13 16:31:14 · 1212 阅读 · 0 评论 -
WEB安全(四)Cookie的使用
1、设置 Cookie 返回给客户端@GetMapping("/change-username")public String setCookie(HttpServletResponse response) { // 创建 cookie Cookie cookie = new Cookie("username", "jin"); //设置 cookie过期时间 cookie.setMaxAge(7 * 24 * 60 * 60); // 7天过期 //添加到 res原创 2022-02-12 20:29:10 · 1282 阅读 · 0 评论 -
WEB安全(三)什么是Cookie?作用是什么?
在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。原创 2022-02-12 18:43:09 · 677 阅读 · 0 评论 -
WEB安全(二)RBAC-基于角色的权限控制模型
RBAC(Role-Based AccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。 RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)What:权限针对的对象或资源(Reso原创 2022-02-11 21:05:12 · 347 阅读 · 0 评论 -
WEB安全(一)认证和授权的区别
认证(authentication)和授权(authorization)在安全性方面相互结合使用,尤其是在获得对系统的访问权限时。但这两个词我们经常搞混,其实它们在概念上是完全不同的。认证意味着确认您自己的身份,而授权意味着授予对系统的访问权限。认证身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。系统确定您是否就是您所说的使用凭据。根据安全级别,身份验证因素有:单因素 身份验证 - 这是最简单的身份验证方法,通常依赖于简单的密码来授予用户对特定系统(如网站或网络)的访问权原创 2022-02-11 20:38:15 · 584 阅读 · 0 评论