现在,我们绝大多数人都会在网上购物买东西。但是很多人都不清楚的是,很多电商网站会存在安全漏洞。比如乌云就通报过,国内很多家公司的网站都存在 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 攻击?的更多相关文章

  1. 电商安全无小事,如何有效抵御 CSRF 攻击?

    现在,我们绝大多数人都会在网上购物买东西.但是很多人都不清楚的是,很多电商网站会存在安全漏洞.乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞.如果某个网站存在这种安全漏洞的话,那么我们在购物 ...

  2. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

  3. 如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...

  4. 第八章 交互技术,8.1 VR电商购物(作者:宋五)

    8.1 VR电商购物 前言 GM LAB在2016年3月成立,是一个旨在探索最新电商购物体验的实验室.在探索VR购物的过程中,有两个需要核心解决的问题:一个是VR购物的产品形态是什么,另一个是VR环境 ...

  5. 第四章 电商云化,4.2 集团AliDocker化双11总结(作者: 林轩、白慕、潇谦)

    4.2 集团AliDocker化双11总结 前言 在基础设施方面,今年双11最大的变化是支撑双11的所有交易核心应用都跑在了Docker容器中.几十万Docker容器撑起了双11交易17.5万笔每秒的 ...

  6. 短视频APP+不同类型社交应用发展分析+化妆品电商

    短视频APP——昙花一现还是发展趋势? 在这个互联网与科技并行且飞速发展的时代,各种app不断涌入市场,其中短视频app便是一个典型,美拍,就成功入围2014年十大最火app.而短视频app也势必要成 ...

  7. 第四章 电商云化,4.1 17.5W秒级交易峰值下的混合云弹性架构之路(作者:唐三 乐竹 锐晟 潇谦)

    4.1 17.5W秒级交易峰值下的混合云弹性架构之路 前言 每年的双11都是一个全球狂欢的节日,随着每年交易逐年创造奇迹的背后,按照传统的方式,我们的成本也在逐年上升.双11当天的秒级交易峰值平时的近 ...

  8. 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)

    电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO. 单点登录开源有很多的解决方案, ...

  9. 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...

随机推荐

  1. JS 截取字符串函数

    一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //a ...

  2. ASP.NET MVC 路由进阶(之二)--自定义路由约束

    3.自定义路由约束 什么叫自定义路由约束呢?假如路由格式为archive/{year}/{month}/{day},其中year,month,day是有约束条件的,必须是数字,而且有一定范围. 这时候 ...

  3. (转)理解SQL SERVER中的分区表

    简介 分区表是在SQL SERVER2005之后的版本引入的特性.这个特性允许把逻辑上的一个表在物理上分为很多部分.而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个 ...

  4. CSS的兼容性解决方案

    什么是兼容性? 同一个网页,在不同浏览器下(IE6.IE7.IE8)下的显示效果不一致,这就是说"CSS不兼容". IETESTer可以同时测试IE5.5.IE6.IE7.IE8这 ...

  5. extends 与 implements 的区别

    extends与implements是Java继承中使用的两个关键字,但extends与implements使用的情景不同: 1.接口继承接口,使用extends 2.类继承类时,用extends 3 ...

  6. PHP 测试程序运行时间 microtime函数用法

    PHP microtime() 函数PHP Date / Time 函数定义和用法microtime() 函数返回当前 Unix 时间戳和微秒数.语法microtime(get_as_float)参数 ...

  7. [转载]mysql慢日志文件分析处理

    原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...

  8. web浏览器下的缓存 - Etag

    设置浏览器缓存的几种方法: Last-Modified : 服务器上文件的最后修改时间 Etag  : 文件标识 Expiers : 本地缓存目录中文件过期的时间 ( 由服务器指定具体的时间 ) Ca ...

  9. Hibernate Cascade & Inverse

    Cascade - 修改实体表 Inverse - 修改中间表 http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html 1.到底在 ...

  10. 大型网站用什么技术比较好,JSP,PHP,ASP.NET

    大型网站,我建议要考虑的问题: 首先讨论一下大型网站需要注意和考虑的问题. 数据库海量数据处理:负载量不大的情况下select.delete和update是响应很迅速的,最多加几个索引就可以搞定,但千 ...