一、三种坏人与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 的。

阅读之web应用安全的更多相关文章

  1. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---Crawl

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---Crawl 1.函数调用它自身,这样就形成了一个循环,一环套一环: from urllib.request ...

  2. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---找出网页中所有的href 1.查找以<a>开头的所有文本,然后判断href是否在<a> ...

  3. 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll

    阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll 1..BeautifulSoup库的使用 Beautiful ...

  4. 如何阅读一个Web项目 【转载】

    摘自网络博客. ============================================================================================ ...

  5. 京东阅读(web)体验优化

    京东有电子书可以购买,可以多端阅读.比如PC客户端,移动端,以及本文提到的PC网站端. 先换个镜头,读书要记笔记(电子版本), 方便以后查阅. 镜头换回来,但是,我们为了方便肯定是想复制,下载啊,分享 ...

  6. 阅读笔记——Web应用程序

    Web应用程序与DD文件 Web应用程序 web应用程序是一种可以通过Web访问的应用程序.Web应用程序最大的好处是永和很容易访问应用程序.用户只需要有浏览器即可,不需要安装其他任何软件.一个Web ...

  7. 【外文阅读】Web Development in 2020: What Coding Tools You Should Learn---Quincy Larson

    原文链接:https://mail.qq.com/cgi-bin/readtemplate?t=safety&check=false&gourl=https%3A%2F%2Fwww.f ...

  8. web 语音播报 & 网页阅读器

    web 语音播报 & 网页阅读器 Chrome auto speech & voice speaking http://3.141592653589793238462643383279 ...

  9. Web性能--TCP的构成

    前言:阅读<Web性能权威指南>摘录笔记.在这本书开篇就读到第一句话令人印象深刻: "合格的开发者知道怎么做,而优秀的开发者知道为什么那么做". 内容大纲: 1.因特网 ...

随机推荐

  1. 基于 CentOS 7 搭建 Git服务器

    Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. ⒈安装依赖库和编译工具 1.安装依赖库 yum install -y curl-devel expat-devel ...

  2. HDU-6704 K-th occurrence (后缀自动机father树上倍增建权值线段树合并)

    layout: post title: HDU-6704 K-th occurrence (后缀自动机father树上倍增建权值线段树合并) author: "luowentaoaa&quo ...

  3. # Clion中编译多个cpp(实现单文件编译)

    Clion中编译多个cpp(实现单文件编译) 在不做任何配置情况下,Clion工程下只能有一个main()函数,新建多个cpp会导致报main()函数重复定义的错误,所以默认情况下无法在一个工程下编译 ...

  4. less的引用及公共变量的抽离

    一.什么是less? less是什么自然不用多言,乃一个css预编译器,可以扩展css语言,添加功能如如允许变量(variables),混合(mixins),函数(functions) 和许多其他的技 ...

  5. python设计购物车

    设计购物车 一需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提 ...

  6. 区间dp 整数划分问题

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  7. 父窗体的委托,子窗体注册,this.Owner是关键

    //声明委托 public delegate void RefreshParentHandler<T>(T obj); //父窗体的委托 public RefreshParentHandl ...

  8. O039、Unshelve Instance 操作详解

    参考https://www.cnblogs.com/CloudMan6/p/5529915.html   上一节我们 shelve Instance 到 Glance,本节学习如何通过 unshelv ...

  9. wpf之二进制资源

    一.当需要添加图片.音频.视屏的资源到wpf项目里是,可以直接把文件添加到项目里 右击add->existing item. 1.如果想将外部文件编异常目标成为二进制资源,在文件的属性窗口 Bu ...

  10. CF505E Mr. Kitayuta vs. Bamboos

    cf luogu 要使得最高的柱子高度最小,考虑二分这个高度,那么剩下的就是要指定一个操作方案,使得最终每个柱子高度\(\le mid\) 因为有个柱子高度不会\(<0\)的限制,所以正着模拟不 ...