一、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框架安全相关推荐

  1. 读书笔记白帽子讲web安全

    2016年3月24日 09:34:32 星期四 ddos攻击: 一种: 随机生成ip, 去建立链接, 由于http/tcp握手协议原理, 发送应答报文时因为ip无效会导致等待重发, 这种行为可以通过电 ...

  2. 分享笔记1 之《白帽子讲web安全》

    分享笔记1 之<白帽子讲web安全> 目录 第一篇 世界观安全 第1章 我的安全世界观 2 1.1 web安全简史 2 1.1.1 中国黑客简史 2 1.1.2 黑客技术的发展历程 3 1 ...

  3. 白帽子讲web安全 ——读书笔记:术语和理论

    最近心血来潮,对安全这些略感兴趣,就买了本 白帽子讲web安全 看看 ,这里做个读书笔记吧!方便啥时候忘了再看一下. exploit--漏洞利用代码 Script kids --脚本小子,利用expl ...

  4. 白帽子讲WEB安全读书笔记(慢慢更新)

    道哥写的白帽子讲WEB安全的读书笔记 文章目录 2020.3.23 ◆ 前言 ◆ 第一篇 世界观安全 1.1 Web安全简史 >> 1.1.1 中国黑客简史 >> 1.1.2 ...

  5. 《白帽子讲Web安全》学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  6. 读白帽子讲WEB安全,摘要

    读<白帽子讲WEB安全>摘要 文章目录 我的安全世界观 安全三要素-CIA 如何实施安全评估 白帽子兵法 客户端安全 浏览器安全 同源策略 浏览器沙箱 恶意网址拦截 高速发展的浏览器安全 ...

  7. 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 前排提醒:文末有pdf领取 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 ...

  8. 学习web安全,强烈推荐这本《白帽子讲web安全》!

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 XSS跨站脚本攻击,通常指 ...

  9. 白帽子讲Web安全(纪念版)

    作者:吴翰清 出版社: 电子工业出版社 品牌:博文视点 出版时间:2021-05-01 白帽子讲Web安全(纪念版)

  10. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

最新文章

  1. 为实现流行病预测:联邦政府在疫情暴发建模方面的努力和机遇
  2. 人生必做清单-----持续更新
  3. Android开发-mac上使用三星S3做真机调试
  4. mpvue微信小程序http请求-fly.js
  5. struts2官方 中文教程 系列六:表单验证
  6. VS2013 使用QCustomPlot等三方库如何配置
  7. 永恒纪元服务器维护时间,永恒纪元各个阶段玩法攻略指南少走弯路
  8. 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
  9. Visual studio 2010 中文版安装Siverlight 5 beta tools 总结
  10. Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)
  11. html类似京东侧边栏,JS实现京东商品分类侧边栏
  12. CentOS装docker
  13. 微软Win11与万物互联时代新系统需求更加迫切
  14. matlab中对于xf(x)的积分,[matlab 积分]MATLAB求积分?
  15. win10安装虚拟机(Virtualbox + vagrant)
  16. STC89C51单片机
  17. 24V转5V稳压芯片,低功耗降线性稳压器
  18. 将JAVA bean/实体类 中为null的属性值转换成空字符串
  19. 【我在异世界学Linux】认识冯诺依曼体系结构
  20. 鼠标滚动:mousewheel事件在Firefox采用DOMMouseScroll事件

热门文章

  1. ogg初始化mysql数据_利用OGG进行数据库表的初始化
  2. 由*.flo(光流)文件生成png图片
  3. 剑指offer面试题[59]-对称的二叉树
  4. 新手上路:盘点「性能测试」必须弄懂的技术点
  5. ios上传图片 java_iOS ASIFormDataRequest上传图片 前后台代码
  6. 360怎么看电脑配置_怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
  7. 数据库修改服务器ip地址吗,服务器数据库与改ip地址吗
  8. 中过滤记录中时间_初效板式过滤器使用中这些事情你要知道?
  9. 数据库java_(六) Java数据库
  10. 6复数与复变函数(六)