广告联盟设计踩坑

1、背景及通过前端

      如今市面上有一些广告联盟,运做方式是他们帮你引导用户,用户下单时返佣金给他们,这也是一些网站经常使用的推销方式。 redis

      最近一朋友公司也用这种方式推广,第一个月跑的好好的,第二个月发现数据猛增,差很少60%的订单都是广告联盟推荐过来的,当时就以为有问题,而后经过一系列的分析发现,系统自己的设计有漏洞,这里抛砖引玉一下。后端

     系统的设计流程以下: 安全

假设朋友公司的网站是ab.com,则访问流程以下;cookie

一、用户访问广告联盟的广告连接;测试

二、广告联盟将自己的标识将本身标识加在ab.com以后,相似 https://ab.com?adId=123网站

三、ab.com将广告联盟标识即123写入cookie中,做用域为ab.com;url

四、用户在ab.com上下单;spa

五、保存订单时,系统将123的广告联盟标识保存到订单中,以标识这个订单来自广告联盟的推荐。 设计

其中2这一步有个中转页,即用户从广告联盟跳转过来的都到这个页面,这个页面只作一件事情,即确认是否来自广告联盟,若是是则将这个标识写入到cookie中。

问题就出如今这一步,通过咱们分析日志,发现订单异常的那个月大量的来自广告联盟的连接的Referer都来自一个访问量比较大的社区,而且是以图片的形式访问!!

假设中转页的地址是 https://abc.om/ad/redirect,则广告联盟经过如下方式伪造图片:

<img src="https://abc.om/ad/redirect?adId=123"

而后联盟在社区发一个热门的帖子,帖子中插入上述图片,这样全部访问这个页面的用户,都会往ab.com写入cookie,这样只要这些用户再访问朋友的网站,则系统都认为是来自广告联盟的。

2、解决方案

      问题的缘由知道了,那怎么解决呢,既而后端写cookie不可靠,就由前端来写Cookie,即用户在访问 ab.com下的任何一个页面的时候,前端有个公共的js会检测url中是否有带上广告联盟标识,若是有,则将标识写入Cookie中,而且设置Cookie为httponly。

写在最后:

一、此次主要仍是在数据上发现了问题,因此监控很是重要。

二、与第三方交互写敏感Cookie尽可能由前端写,后端验证;

三、涉及到钱的场景最好是有安全测试;

全球智能DNS解析实践

从一次线上故障来看redis删除机制

PHP内存池分析

相关文章
相关标签/搜索