为什么 UserAgent 中出现「 iPhone;U; 」的订单都是高危的?

bigsec

相信大多数童靴对 UserAgent (以下简称 “UA”)都比较了解,但在开头还是简单介绍一下 UA 的基本概念,方便理解。

UserAgent 是什么?

UserAgent 又称为「用户代理」,简称 UA 。 UA 的存在,能够让服务器能够识别客户端的信息,从而针对不同客户端做出特定的行为。

比如,给浏览器语言设置为中文的用户观看中文页面;给使用移动浏览器的用户推荐 APP 下载链接等。

UA 是一串字符,其标准的格式为:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识版本信息。

例:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

通过 UA ,你能对用户使用的软件硬件情况有个大致的了解。比如以上的例子就可以翻译成:

Windows 10 系统下的 64 位计算机,使用 Webkit 渲染引擎的 Chrome/Safari 浏览器。

为什么 UserAgent 中出现「 iPhone;U;」的订单都是高危的?

回答这个问题之前,需要先回答另外两个问题。

① iPhone;U 这种组合合理吗?

合理。不过仅限于 iOS4 以及之前的版本。

iOS4 以及之前的 UA :

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7

iOS5 以及之后的 UA :

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 Safari/7534.48.3

可以发现,iOS5 开始,‘ U ’消失了。

②‘ U ’的意思?为什么 iOS5 开始就没有‘ U ’

‘ U ’是加密等级的标识,‘ U ’表示「 128AES 」强数据加密,相对于‘ I ’弱安全加密「 40AES 」和‘ N ’无安全加密。

  • iOS4 以及更低的版本,均是使用「 128AES 」类型进行加密。在 UA 中标示为‘ U ’ 。
  • 而从 iOS5 开始,数据开始使用「 256AES 」类型进行加密。由于‘ U ’ 是特指「 128AES 」类型,所以 UA 中不再有‘ U ’ 。

通俗解释就是:

  • iPhone;U; 早期版本的iOS
  • iPhone; 现役版本的iOS

带「 iPhone;U;」字样跟互联网欺诈订单有什么关系?

苹果公司在 2011 年年末发布的 iPhone4s 自带 iOS5 ,所以带「 iPhone;U;」字样的设备最高的型号也只是 iPhone4( iPad 2 或者过时的iPod Touch 4 ) 。

而今 iOS 已经经历了多个版本的迭代,并且根据公开数据显示,截止 2016 年 7 月,iOS9 占 86% ,iOS8 占 11% ,余下更早版本的所有占 3% 。这里面又有多少是 iOS4 呢?

在发现了一批欺诈订单都具有这个特点之后,我们不禁想到:

2016 年在线购物的人,还会用着过时的 iOS4 系统吗?

bigsec

最大的可能性,就是“某些人”用着一批被市场淘汰的设备,发挥它的“剩余价值”。在被风控业务人员发现之前,这么做,其实也不算太笨。

一个值得思考的扩展问题

问:UserAgent 能够被修改吗?

答:可以。主流浏览器有专门修改 UserAgent 的插件,并且网络上也流传着各种修改的方法。但是所有的修改,也只是在一个现有的 UA 库里选择,并不能做到真正意义上的自定义。