• Web安全


                           

    一、三种坏人与servlet安全

    网络攻击者

    对应的servelt安全规范

    假冒者

    认证

    非法升级者

    授权

    窃听者

    机密性

    数据完整性

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

    二、认证与授权

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

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

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

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

    服务端:容器接收到请求,容器接收到有用户名和口令的请求时,在“安全表”中再次查找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协议用于实现机密性和数据完整性。

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

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

    SSL/TLS网络协议

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

    可以查看:微服务架构下的身份认证与鉴权

    参考资料

    SSL/TLS原理详解 

    HTTPS详解

    常见网络攻击--XSS && CSRF 

    Head First Servlets & JSP

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

  • 相关阅读:
    ExpandableListView实现子Item的点击事件
    使用AndroidStudio自动生成JavaDoc文档
    将Asset中的数据库文件拷贝出来使用
    拦截webview调用系统浏览器打开链接
    配置国内 Docker Registry Mirror
    解决mysql 主从数据库同步不一致的方法
    讯时网关路由规则小结
    Docker 导出 & 导入
    Centos 7 安装Docker-ce记录
    Go Rand小结
  • 原文地址:https://www.cnblogs.com/xiaojq/p/11109635.html
Copyright © 2020-2023  润新知