因为名字叫True 她被苹果iCloud拒绝了

国外的一个苹果用户,申请 iCloud 服务,被匪夷所思的原因拒绝了。

不但拒绝,她的 ID 还直接被封了 6 个月。

这一切,都是因为她的名字里有个 true。

而且,这个问题还真不好办,推特上一位工龄 30 年的老程序员劝她:

解决这个问题,最好的办法还是改名…

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

一个“true”就能干扰到苹果系统?踩到这个坑的用户,真的只能改名吗?

“命犯编程”的尴尬

众所周知,在编程语言中,true(真)是一个逻辑值,与“false”相对。true 在编程语句中代表 1 或大于 1 的数,反之 false 代表 0 或 null。

而这位不幸的大姐,名叫 Rachel True,是美国的一位演员、模特。

True 作为姓氏确实很罕见,但是这个好听的名字在申请 iCloud 时,却成了大麻烦。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

她在输入名字时,姓氏中的t,没有大写,直接敲上了“true”。

而在苹果返回的结果中,可以看到系统无法将 true 赋值给变量 lastName。

也就是说,本来应该作为字符串的“true”,直接被系统认定成了布尔值。

这个错误,导致 iCloud 的申请进程终止。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

并且,据 Rachel True 说,苹果还直接将她的 ID 锁定 6 个月。

原因没有细说,不过很有可能是系统判定流程异常,采取了规避恶意 SQL 注入的防御性手段。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

过去的几天,她都在不断地向苹果公司申诉,和 AppleSupport 周旋,平均每天要花两三个小时。

但是问题根本解决不了,iCloud 服务费却依然再收。

当然,这也怪不得苹果,true 在代码中,毕竟已经用了几十年。

而大家分析,苹果的代码中,没有强制将所有进入 lastName 的值识别为字符串的机制。

所以解决这个问题,要么在输入时给名字前后加单引号,要么真的只能改名了。

那些比“true”还难搞的名字

程序员中流传着一个经典的笑话 Bobby Tables。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

小孩名叫 Robert’); DROP TABLE students,结果把整个学校的学生资料都搞没了。

这下你们应该明白对输入做净化处理有多重要吧??

不少人都说,这次的事件,简直就是现实版 Bobby Tables。

除了 true,还有很多人的名字都把系统搞崩溃过。

比如,有姓 Root 的、有姓 Self 的,当然还有姓“Null”的。

Null 这个姓还并不罕见,很多人出门连买机票都很困难。外媒报道过一位 Jennifer Null,结婚后改了姓,才能正常使用各种服务。

推特上,有一位从荷兰来的程序员小姐姐,她的姓氏是 van Os,当年毕业入职时,公司用 bash script 建立新员工账号。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

结果,操作时没有在名字上加引号,姓氏中的空格直接搞崩了整个脚本。

因为名字叫 True 她被苹果 iCloud 服务器拒绝了

其实,这种问题,除了给用户本人带来诸多不便,在系统安全上也存在很大的安全隐患。

就像很多人提醒的那样,每一个字符串的误识别,都是黑客可以利用的 SQL 注入攻击机会。

好在,我们中国用户不用担心这个问题~

本文链接

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注