一、三种坏人与servlet安全

网络攻击者 对应的servlet安全规范
假冒者 认证
非法升级者 授权
窃听者 机密性
  数据完整性

认证可以防止“假冒者”攻击,授权可以防止“非法升级者”攻击,机密性和数据完整性可以防止“窃听者”攻击。

二、认证与授权

Web容器进行认证与授权的过程:

  1. 客户端:浏览器向容器请求一个web资源发出请求;

  2. 服务端:容器接受到请求时,容器在“安全表”中查找URL(安全表存储在容器中,用于保存安全信息),如果在安全表中查找到URL,就会看这个URL请求的资源是否是受限的,如果是,则返回401(Unauthorized——未授权),包含一个www.authenticate首部和realm(领域)信息;

  3. 客户端和用户:浏览器得到401的响应,根据realm信息,要求用户提供用户名和口令;浏览器再次发送刚才的那个请求,但是这个请求还包括一个安全HTTP首部以及用户名和口令;

  4. 服务端:容器接收到请求,容器接收到有用户名和口令的请求时,在“安全表”中再次查找URL;如果在安全表中找到URL且发现这是一个受限资源,则检查用户名和口令是否匹配。

    • 如果不匹配则再次返回401;

    • 如果匹配,说明认证通过,则接着检查这个用户的权限,容器会查看这个用户指派的“角色”是否允许访问这个资源(即授权),如果授权成功,则把这个资源返回给客户端;

三、实施web安全

安全概念  谁负责 复杂程度 耗时程度
认证 管理员
授权 部署人员
机密性 部署人员
数据完整性 部署人员

四、Spring-Security

 Spring Security是专注于为Java应用提供认证(authentication)授权(authorization)机制的开发框架,和其他Spring项目一样,Spring Security的能力是可以灵活得应对各种定制的需求。

Spring Security的特点:

  • 对认证和授权的全面和可拓展性支持;

  • 可以防御常见的网络攻击,例如:session fixation、clickjacking、cross site request forgery等等

  • 支持与Servlet API集成

  • 支持与Spring MVC集成,但不限于此

这里我从Spring Guides找到了一个在web应用中使用Spring Security保护资源的例子——securing-web demo,我自己试验做了一遍,建议读者也跟着自己实现一遍,加深理解。

五、HTTPS与SSL

HTTPS和SSL协议用于实现机密性数据完整性

  1. HTTPS
    HTTP协议是基于TCP构建的应用层协议;HTTPS协议是基于SSL/TLS协议之上的应用层协议,而SSL/TLS是基于TCP构建的协议。在云栖社区找到一篇HTTPS详解,讲得不错,可以仔细看看。

  2. SSL/TLS
    SSL是一个介于HTTP协议与TCP之间的一个可选层,在网络协议中的层次入下图所示。TLS是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。

SSL/TLS网络协议

六、微服务架构下的认证与授权

可以查看我之前写的一篇笔记:微服务架构下的身份认证与鉴权

原文链接:https://mp.weixin.qq.com/s/VQNGuVgCRfvsOtzyP0wUIg

最新文章

  1. 自用VS Code 上的Markdown 编辑器css
  2. 怎样避免 i f 判断过多,全复杂度较高,代码不美观的问题?
  3. 请问用Inno_Setup打包文件夹时怎么排除其中一个文件?
  4. mvc3.0 +linq 操作数据库中表的数据(ps:本人菜鸟刚学)
  5. 拓扑排序-DFS
  6. KEIL C编译器常见警告与错误信息的解决办法
  7. java下tcp的socket连接案例
  8. 关于JAVA正则匹配空白字符的问题
  9. ElasticSearch 插件jdbc import(1)-----定时执行
  10. Eclipse导入项目文件夹
  11. 离线合成联想到的--canvas合成水印
  12. BAT面试经验分享——iOS高级开发工程师的自我总结!
  13. monkey日志解析
  14. 【汇总目录】C#
  15. Linux上Simplescalar/ARM的安装和运行文档
  16. [daily] 内存越界的分析与定位
  17. JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明
  18. AngularJS学习之 ui router
  19. 日常使用Shell积累
  20. centos 6.5 升级php到5.6.17版本

热门文章

  1. WHU 583 Palindrome ( 回文自动机 && 本质不同的回文串的个数 )
  2. HDU 4612 Warm up —— (缩点 + 求树的直径)
  3. Java虚拟机与平台无关性
  4. IntelliJ IDEA 2017.3 创建多Module项目时,右边栏出现多个root模块的问题。如图。
  5. 数据结构之双端队列(Deque)
  6. P4127 [AHOI2009]同类分布
  7. curl 使用笔记
  8. 动态绑定v-model
  9. Selenium 2自动化测试实战34(编写Web测试用例)
  10. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计