电商安全无小事,如何有效地抵御 CSRF 攻击?
现在,我们绝大多数人都会在网上购物买东西。但是很多人都不清楚的是,很多电商网站会存在安全漏洞。比如乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞。如果某个网站存在这种安全漏洞的话,那么我们在购物的过程中,就很可能会被网络黑客盗刷信用卡。是不是有点「不寒而栗」 的感觉?
首先,我们需要弄清楚 CSRF 是什么。它的全称是 Cross-site request forgery ,翻译成中文的意思就是「跨站请求伪造」,这是一种对网站的恶意利用。简单而言,就是某恶意网站在我们不知情的情况下,以我们的身份在你登录的某网站上胡作非为——发消息、买东西,甚至转账......
这种攻击模式听起来有点像跨站脚本(XSS),但 CSRF 与 XSS 非常不同,并且攻击方式几乎相左。XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往很少见,因此对其进行防范的资源也相当稀少。不过,这种「受信任」的攻击模式更加难以防范,所以被认为比 XSS 更具危险性。
这个过程到底是怎样的呢?让我们看个简单而鲜活的案例。
银行网站 A,它以 GET 请求来完成银行转账的操作,如:
http://www.mybank.com/Transfer.php?toBankId=11&money=1000
危险网站 B,它里面有一段 HTML 的代码如下:
<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>
可能会发生什么?你登录了银行网站 A,然后访问危险网站 B 以后,突然发现你的银行账户少了10000块......
为什么会这样呢?原因是在访问危险网站 B 之前,你已经登录了银行网站 A,而 B 中的以 GET 的方式请求第三方资源(这里的第三方就是指银行网站了,原本这是一个合法的请求,但这里被不法分子利用了),所以你的浏览器会带上你的银行网站 A 的 Cookie 发出 GET 请求,去获取资源
「http://www.mybank.com/Transfer.php?toBankId=11&money=1000」,
结果银行网站服务器收到请求后,认为这是一个合理的转账操作,就立刻转账了......
其实,真实的银行网站不会如此不加防范,但即使用 POST 替代 GET,也只是让危险网站多花些力气而已。危险网站 B 依然可以通过嵌入 Javascript 来尝试盗取客户资金,所以我们时不时会听到客户资金被盗的案件,其实这并不是很不稀奇。
相信,很多人了解到这儿,会出现一身冷汗,还让不让我们在「双11」期间能够愉快地享受网购的快感了?难道没有什么办法防住它嘛?
当然是有的。可以给网站打补丁,如 Cookie Hashing (所有表单都包含同一个伪随机值)。这可能是最简单的解决方案了,因为理论上攻击者不能获得第三方的 Cookie,所以表单中的数据也就构造失败了。但这并不是完美的解决方案,因为用户的 Cookie 很容易由于网站的 XSS 漏洞而被盗取;另一种方法是用验证码,每次的用户提交都需要用户在表单中填写一个图片上的随机字符串....这个方案可以完全解决 CSRF,但用户体验很遭罪(忒麻烦了)。还有一种是 One-Time Tokens(不同的表单包含不同的伪随机值),需要设计令牌和 Session 管理逻辑,并修改 Web 表单,网站运维又很遭罪。
以上所有办法都需要对网站进行修修补补,再花费很多气力去测试。可能有人会想到用防火墙来防护,那么有没有满足要求的产品呢?在去年,下一代防火墙——自适应安全防护(RASP)这个概念横空出世,吸引了很多企业的注意,它对请求上下文的感知能力和深入应用内部的识别防御能力一改被动的、外部肉盾式的防护理念,可以在无需给网站打补丁的情形下承担起防护的责任,值得尝试。
这里推荐一个最新的解决方案,它的名字叫 RASP(实时应用自我保护),这种方式可以有效解决这类的问题。针对 CSRF 漏洞问题,RASP 定制了规则集和防护类,然后采用 Java 字节码技术,在被保护的类被加载进虚拟机之前,根据规则对被保护的类进行修改,将防护类织入到被保护的类中。大家不妨可以一试。
目前国内仅有一家在提供 RASP 的服务厂商 OneASP。 能以最小代价并且快速解决上述难题,你只需要非常简单的修改一下 JVM 的启动配置,就可以将运行。它能将攻击过程透明化,通过控制台可以非常清楚的知道系统什么时候、哪个模块、哪行代码遭受了哪种类型的攻击。同时还能够快速修复漏洞,只要将 OneRASP 和应用程序部署在一起就可以快速修复已知漏洞,不需要漫长的扫描 - 修复 - 扫描的过程。通过实时升级系统快速同步最新漏洞,避免零日攻击。
当然,只有 OneRASP 也并非万无一失,最优的解决方案是将 OneRASP 和网络安全解决方案、应用安全扫描与测试等安全防护系统结合起来,形成多层次立体的防御体系。如今各种攻击手段层出不穷,单靠其中任一技术来防范应用程序的安全是不科学的。但 OneRASP 永远是应用程序安全保护的最后一道无法逾越的壕沟,它可以帮你快速提升应用程序的安全级别,你再也不用担忧没有合格的安全工程师了。当然也确保你的企业不会作为下一个安全受害者登上头条。
OneRASP(实时应用自我保护)是一种基于云的应用程序自我保护服务, 可以为软件产品提供实时保护,使其免受漏洞所累。
电商安全无小事,如何有效地抵御 CSRF 攻击?的更多相关文章
- 电商安全无小事,如何有效抵御 CSRF 攻击?
现在,我们绝大多数人都会在网上购物买东西.但是很多人都不清楚的是,很多电商网站会存在安全漏洞.乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞.如果某个网站存在这种安全漏洞的话,那么我们在购物 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 第八章 交互技术,8.1 VR电商购物(作者:宋五)
8.1 VR电商购物 前言 GM LAB在2016年3月成立,是一个旨在探索最新电商购物体验的实验室.在探索VR购物的过程中,有两个需要核心解决的问题:一个是VR购物的产品形态是什么,另一个是VR环境 ...
- 第四章 电商云化,4.2 集团AliDocker化双11总结(作者: 林轩、白慕、潇谦)
4.2 集团AliDocker化双11总结 前言 在基础设施方面,今年双11最大的变化是支撑双11的所有交易核心应用都跑在了Docker容器中.几十万Docker容器撑起了双11交易17.5万笔每秒的 ...
- 短视频APP+不同类型社交应用发展分析+化妆品电商
短视频APP——昙花一现还是发展趋势? 在这个互联网与科技并行且飞速发展的时代,各种app不断涌入市场,其中短视频app便是一个典型,美拍,就成功入围2014年十大最火app.而短视频app也势必要成 ...
- 第四章 电商云化,4.1 17.5W秒级交易峰值下的混合云弹性架构之路(作者:唐三 乐竹 锐晟 潇谦)
4.1 17.5W秒级交易峰值下的混合云弹性架构之路 前言 每年的双11都是一个全球狂欢的节日,随着每年交易逐年创造奇迹的背后,按照传统的方式,我们的成本也在逐年上升.双11当天的秒级交易峰值平时的近 ...
- 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)
电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO. 单点登录开源有很多的解决方案, ...
- 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...
随机推荐
- python学习day5--set、函数
1.set 无序,不重复序列 创建:与dict一样用{},区别在于dict内元素为键值对 se={"123","456,444"} print(type(se) ...
- 如何设置win7任务栏的计算机快速启动
win7默认会有一个资源管理器的快速启动栏,但是点击的时候会打开“库”,你可能一般不会用这个库,想打开计算机怎么办呢? 其实很简单,再按住shift的同时右键资源管理器的这个快速启动项,然后会出现菜单 ...
- java 内部类定义在局部时需要注意的情况
/*内部类定义在局部时,1,不可以被成员修饰符修饰2,可以直接访问外部类中的成员,因为还持有外部类中的引用. 但是不可以访问它所在的局部中的变量.只能访问被final修饰的局部变量.*/clas ...
- 关键字 static
A. 面向过程: 1. 静态全局变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量. 1.1. 特点: |该变量在全局数据区分配内存: |未经初始化的静态全局变量会被程序自 ...
- main与进程 线程
你起一个CS游戏,这上CS游戏在操作系统中就是一个进程. 但是这个游戏一边在打枪,一边人在走动,一边还有音乐 ,打枪 , 走动 , 音乐 等都是一些线程. 线程不是由进程决定了. 也就是说:你在操作系 ...
- JBoss部署项目log4j配置会造成死锁问题,浏览器访问一直pending状态
今天将项目部署到JBoss服务器上,部署成功后,浏览器访问页面一直在等待响应. 查了很长时间,最后在服务器上通过jstack pid命令查看Java堆栈信息,发现了有两个线程死锁. 看到造成死锁的原因 ...
- vi 技巧
:%s/^/\// 行首加 / :%s/$/\// 行尾加/ :%s/^\///g 行首减 / :%s/\/$//g 行尾减/ :%s/^\s*//g 行首减 空格
- Export功能 导致 页面显示很多非法字符,还可能页面显示两次
private void exportBinaryToExcel(byte[] bytes, string filename) { Response.AddHeader("Content-D ...
- DIV当textarea使用,在聚焦的时候将光标移动到内容的末尾
#### DIV当textarea使用,在聚焦的时候将光标移动到内容的末尾 #### <style type="text/css"> .test_box { width ...
- apache配置网站目录的读写权限
分享下apache中配置网站目录文件权限的方法. 假设http服务器运行用户和用户组是www,网站用户为centos,网站根目录是/home/centos/web. 操作方法与步骤:1,首先,设定网站 ...