Web应用安全

一、三种坏人与servlet安全

网络攻击者

对应的servlet安全规范

假冒者(Impersonator)

认证

非法升级者(Upgrader)

授权

窃听者

机密性

数据完整性

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

二、认证与授权

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网络协议

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

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

参考资料

  1. SSL/TLS原理详解
  2. HTTPS详解
  3. 常见网络攻击--XSS && CSRF
  4. Head First Servlets & JSP

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏派森公园

cookie和token

53950
来自专栏瞎说开发那些事

linux下利用一次性口令实现 安全管理

22060
来自专栏张戈的专栏

CCKiller:Linux 轻量级 CC 攻击防御工具

很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了。博客从此走上了经常被人拿来练手的不归之路。当然,还是有不少朋友在生产环境使用,并...

1.7K00
来自专栏FreeBuf

如何在macOS上监听单个应用HTTPS流量

写在前面的话 如果你准备对网络协议进行逆向分析或进行任何与网络安全有关的活动时,可能是为了了解协议运行机制,也有可能是为了查找敏感信息,你或多或少都需要收集一定...

27250
来自专栏云端架构

【云端架构】常见电脑开放端口及含义

说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址...

62870
来自专栏北京马哥教育

吐血整理所有常用端口,不全你来打我!

作者:ADreamClusive 来源: http://blog.csdn.net/u013943420/article/details/65938696 大家...

427130
来自专栏WindCoder

JSON Web Token(JWT)教程:一个基于Laravel和AngularJS的例子

这是一篇介绍JSON Web Token(JWT)的文章,虽然可能用到的例子和Laravel和AngularJS有关,但知道了原理便能写出适用于自己的。同时,由...

46710
来自专栏我的小碗汤

浅谈json web token及应用

Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,...

12530
来自专栏菩提树下的杨过

IIS7.5中神秘的ApplicationPoolIdentity

IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem...

232100
来自专栏维C果糖

详述 iTerm2 配色及免密登录 SSH 的方法

博主说:iTerm2 是一个 Mac 版的类似于 Xshell 的终端工具,虽然很多同学说其功能并没有 Xshell 那么强大,但它仍然能够满足我们的大部分需...

92760

扫码关注云+社区

领取腾讯云代金券