[笔记]《白帽子讲Web安全》- Web框架安全
一、MVC框架安全
从数据的流入来看,用户提交的数据先后流经了View层、Controller、Model层,数据流出则反过来。在设计安全方案时,要牢牢把握住数据这个关键因素。
比如在Spring Security中,通过URL pattern实现的访问控制,需要由框架来处理所有用户请求,在Spring Security获取了URL handler基础上,才有可能将后去的安全检查落实。在Spring Security的配置中,第一步就是在web.xml文件中增加一个filter,接管用户数据。
<filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern> </filter-mapping>
一些主要的Web安全威胁,如XSS、CSRF、SQL注入、访问控制、认证、URL跳转等不涉及业务逻辑的安全问题,都可以集中放在MVC框架中解决。
二、模板引擎与XSS防御
在View层,可以解决XSS问题。XSS攻击是在用户的浏览器上执行的,其形成过程则是在服务器端页面渲染时,注入了恶意的HTML代码导致的。从MVC架构来说,是发生在View层,因此使用“输出编码”的防御方法更加合理,这意味着需要针对不同上下文的XSS攻击场景,使用不同的编码方式。
三、Web框架与CSRF防御
在Web框架中可以使用security token解决CSRF攻击的问题。
CSRF攻击的目标,一般都会产生“写数据”操作的URL,因为在CSRF的攻击过程中攻击者无法获取到服务器端返回的数据,攻击者只是借用户之手触发服务器的动作,所以读数据对于CSRF来说无直接的意义(但是如果同时存在XSS漏洞或者其他的跨域漏洞,则可能会引起别的问题,在这里,仅仅就CSRF对抗本身进行讨论)。
在Web应用开发中,有必要对“读操作”和“写操作”予以区分,比如要求所有的“写操作”都使用HTTP POST。
实际上POST本身并不足以对抗CSRF,因为POST也是可以自动提交的。但是POST的使用,对于保护token有着积极的意义,二security token的私密性(不可预测性原则),是防御CSRF攻击的基础。
对于Web框架来说,可以自动地在所有涉及POST的代码中添加token,这些地方包括所有的form表单、所有的Ajax POST请求等。
完整的CSRF防御方案,对于Web框架来说有以下几处地方需要改动。
- 在Session中绑定token。如果不能保存到服务器端Session中,则可以代替为保存到Cookie里。
- 在form表单中自动填入token字段,比如<input type=hidden name="anti_csrf_token" value="$token"/>。
- 在Ajax请求中自动添加token,这可能需要已有的Ajax封装实现的支持。
- 在服务器端对比POST提交参数的token与Session中绑定的token是否一致,以验证CSRF攻击。
四、HTTP Headers管理
在Web框架中,可以对HTTP头进行全局化的处理,因此一些基于HTTP头的安全方案可以很好地实施。
比如针对HTTP返回头的CRLF注入。
类似的,针对30X返回好的HTTP Response,浏览器将会跳转到Location指定的URL,攻击者往往利用此类功能实施钓鱼或诈骗。
HTTP/1.1 302 Moved Temporarily (...) Location: http://www.phishing.tld
对于框架来说,管理好跳转地址是很有必要的。一般来说,可以在两个地方这件事情:
- 如果Web框架中提供统一的跳转函数,则可以在跳转函数内部实现一个白名单,指定跳转地址只能在白名单中;
- 另一种解决方式是控制HTTP的Location字段,限制Location的值只能是哪些地址,也能起到同样的效果。
五、数据持久层与SQL注入
使用ORM(Object/Relation Mapping)框架对SQL注入是有积极意义的。对抗SQL注入的最佳方式就是使用“预编译绑定变量”。
六、还能想到什么
凡是在 Web 框架中可能实现的安全方案,只要对性能没有太大的损耗,都应该考虑实施。
Spring Security 为 Spring MVC 的用户提供了许多安全功能,比如基于 URL 的访问控制、加密方法、证书支持、OpenID 支持等。
转载于:https://www.cnblogs.com/SyMind/p/8376881.html
[笔记]《白帽子讲Web安全》- Web框架安全相关推荐
- 读书笔记白帽子讲web安全
2016年3月24日 09:34:32 星期四 ddos攻击: 一种: 随机生成ip, 去建立链接, 由于http/tcp握手协议原理, 发送应答报文时因为ip无效会导致等待重发, 这种行为可以通过电 ...
- 分享笔记1 之《白帽子讲web安全》
分享笔记1 之<白帽子讲web安全> 目录 第一篇 世界观安全 第1章 我的安全世界观 2 1.1 web安全简史 2 1.1.1 中国黑客简史 2 1.1.2 黑客技术的发展历程 3 1 ...
- 白帽子讲web安全 ——读书笔记:术语和理论
最近心血来潮,对安全这些略感兴趣,就买了本 白帽子讲web安全 看看 ,这里做个读书笔记吧!方便啥时候忘了再看一下. exploit--漏洞利用代码 Script kids --脚本小子,利用expl ...
- 白帽子讲WEB安全读书笔记(慢慢更新)
道哥写的白帽子讲WEB安全的读书笔记 文章目录 2020.3.23 ◆ 前言 ◆ 第一篇 世界观安全 1.1 Web安全简史 >> 1.1.1 中国黑客简史 >> 1.1.2 ...
- 《白帽子讲Web安全》学习笔记
一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...
- 读白帽子讲WEB安全,摘要
读<白帽子讲WEB安全>摘要 文章目录 我的安全世界观 安全三要素-CIA 如何实施安全评估 白帽子兵法 客户端安全 浏览器安全 同源策略 浏览器沙箱 恶意网址拦截 高速发展的浏览器安全 ...
- 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)
Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 前排提醒:文末有pdf领取 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 ...
- 学习web安全,强烈推荐这本《白帽子讲web安全》!
Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 XSS跨站脚本攻击,通常指 ...
- 白帽子讲Web安全(纪念版)
作者:吴翰清 出版社: 电子工业出版社 品牌:博文视点 出版时间:2021-05-01 白帽子讲Web安全(纪念版)
- 白帽子讲web安全——认证与会话管理
在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...
最新文章
- 为实现流行病预测:联邦政府在疫情暴发建模方面的努力和机遇
- 人生必做清单-----持续更新
- Android开发-mac上使用三星S3做真机调试
- mpvue微信小程序http请求-fly.js
- struts2官方 中文教程 系列六:表单验证
- VS2013 使用QCustomPlot等三方库如何配置
- 永恒纪元服务器维护时间,永恒纪元各个阶段玩法攻略指南少走弯路
- 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
- Visual studio 2010 中文版安装Siverlight 5 beta tools 总结
- Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)
- html类似京东侧边栏,JS实现京东商品分类侧边栏
- CentOS装docker
- 微软Win11与万物互联时代新系统需求更加迫切
- matlab中对于xf(x)的积分,[matlab 积分]MATLAB求积分?
- win10安装虚拟机(Virtualbox + vagrant)
- STC89C51单片机
- 24V转5V稳压芯片,低功耗降线性稳压器
- 将JAVA bean/实体类 中为null的属性值转换成空字符串
- 【我在异世界学Linux】认识冯诺依曼体系结构
- 鼠标滚动:mousewheel事件在Firefox采用DOMMouseScroll事件
热门文章
- ogg初始化mysql数据_利用OGG进行数据库表的初始化
- 由*.flo(光流)文件生成png图片
- 剑指offer面试题[59]-对称的二叉树
- 新手上路:盘点「性能测试」必须弄懂的技术点
- ios上传图片 java_iOS ASIFormDataRequest上传图片 前后台代码
- 360怎么看电脑配置_怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
- 数据库修改服务器ip地址吗,服务器数据库与改ip地址吗
- 中过滤记录中时间_初效板式过滤器使用中这些事情你要知道?
- 数据库java_(六) Java数据库
- 6复数与复变函数(六)