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

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

  1. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. 网页提交中文到WEB容器的经历了些什么过程....

    先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...

  3. 闲来无聊,研究一下Web服务器 的源程序

    web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...

  4. java: web应用中不经意的内存泄露

    前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs. ...

  5. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  6. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  7. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)

    Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...

  8. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  9. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  10. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

随机推荐

  1. luogu 1169 [ZJOI2007]棋盘制作 悬线dp

    悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...

  2. luogu 1220 关路灯 区间dp

    Code: #include <bits/stdc++.h> #define ll long long #define N 1003 #define setIO(s) freopen(s& ...

  3. *p++=i怎么理解?

    #include<stdio.h> void fibonacci(int *p,int n) { *p++=1; *p++=1; while(n>2) { *p++=*(p-1)+* ...

  4. [Linux命令]curl命令参数详解——转载

    linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态.curl命令参数介 ...

  5. Python爬虫 Urllib库的基本使用

    1.构造Requset 其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容.比如上面的两行代码,我们可以这么改写 ...

  6. Codeforces 1238E. Keyboard Purchase

    传送门 注意到 $m$ 只有 $20$ ,考虑一下状压 $dp$ 设 $f[S]$ 表示当前确定的字符集合为 $S$ ,那么转移就考虑从最右边加入的下一个字符 $c$ 那么问题来了,代价如何计算 考虑 ...

  7. 在linux环境下使用icepdf或pdfbox将pdf转化成图片是乱码解决

    在linux环境下使用icepdf或pdfbox将pdf转化成图片是出现乱码,网上查发下是itextpdf生成pdf引用"STSong-Light"字体而linux环境下没有这个字 ...

  8. VSCode查询快捷键对应功能技巧

  9. Tomcat多实例集群架构 安全优化和性能优化

    Tomcat多实例 复制tomcat目录 /usr/local/tomcat1 /usr/local/tomcat2 修改多实例配置文件 #创建多实例的网页根目录 mkdir -p /data/www ...

  10. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解

    笔记 2.微服务下登录检验解决方案 JWT讲解     简介:微服务下登录检验解决方案 JWT讲解 json wen token 1.JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方 ...