一、三种坏人与servlet安全



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

二、认证与授权

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

  1. 客户端:浏览器向容器请求一个web资源发出请求;
  1. 服务端:容器接受到请求时,容器在“安全表”中查找URL(安全表存储在容器中,用于保存安全信息),如果在安全表中查找到URL,就会看这个URL请求的资源是否是受限的,如果是,则返回401(Unauthorized——未授权),包含一个www.authenticate首部和realm(领域)信息;
  1. 客户端和用户:浏览器得到401的响应,根据realm信息,要求用户提供用户名和口令;浏览器再次发送刚才的那个请求,但是这个请求还包括一个安全HTTP首部以及用户名和口令;
  1. 服务端:容器接收到请求,容器接收到有用户名和口令的请求时,在“安全表”中再次查找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详解,讲得不错,可以仔细看看。
    1. SSL/TLS
      SSL是一个介于HTTP协议与TCP之间的一个可选层,在网络协议中的层次入下图所示。TLS是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。

最新文章

  1. HIbernate的基本包——八个,详细条目
  2. c#操作文件夹得读写权限
  3. LoadRunner测试50人同时登陆下单
  4. word中打出希腊字母
  5. (三)结构体指针、sizeof
  6. unix shell-01 file
  7. linux诡异的半连接(SYN_RECV)队列长度
  8. 织梦dedecms返回上一级链接代码
  9. Rescue(bfs)
  10. MySQL的InnoDB引擎与MyISAM引擎
  11. html 点击复制
  12. php 通过header下载中文文件名 压缩包损坏或文件不存在的问题
  13. Windows使用MongoDB,以及索引创建
  14. vue day8 table page
  15. configure.in详解
  16. WeRun is mini-app
  17. Visual Studio Code配置JavaScript环境
  18. acm 比赛模板
  19. ansible 删除路径下的多个文件[收集的参考]
  20. 求最短路径的三种算法: Ford, Dijkstra和Floyd

热门文章

  1. Tcpdump移植
  2. soap-ws获取ws中的所有的接口方法
  3. 【java基础学习001】概述
  4. CSS float和position属性
  5. LeetCode 206——链表反转(JAVA)
  6. Java回调实现异步 (转)
  7. 怎样理解NodeList的动态集合与静态集合
  8. webpack自定义loader并发布
  9. Codeforces Round #406 (Div. 2) A MONSTER
  10. WCF寄宿windows服务二