因為名字叫True,她被蘋果iCloud伺服器拒絕了

賈浩楠 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

國外的一個蘋果使用者,申請iCloud服務,被匪夷所思的原因拒絕了。

不但拒絕,她的ID還直接被封了6個月。

這一切,都是因為她的名字裡有個

true

而且,這個問題還真不好辦,推特上一位工齡30年的老程式設計師勸她:

解決這個問題,最好的辦法還是改名…

因為名字叫True,她被蘋果iCloud伺服器拒絕了

一個“true”就能干擾到蘋果系統?踩到這個坑的使用者,真的只能改名嗎?

“命犯程式設計”的尷尬

眾所周知,在程式語言中,

“命犯程式設計”的尷尬

(真)是一個邏輯值,與“false”相對。true在程式設計語句中代表1或大於1的數,反之false代表0或null。

而這位不幸的大姐,名叫

true

,是美國的一位演員、模特。

True作為姓氏確實很罕見,但是這個好聽的名字在申請iCloud時,卻成了大麻煩。

因為名字叫True,她被蘋果iCloud伺服器拒絕了

她在輸入名字時,姓氏中的t,沒有大寫,直接敲上了“true”。

而在蘋果返回的結果中,可以看到

Rachel True

也就是說,本來應該作為字串的“true”,直接被系統認定成了布林值。

這個錯誤,導致iCloud的申請程序終止。

因為名字叫True,她被蘋果iCloud伺服器拒絕了

並且,據Rachel True說,蘋果還直接將她的ID鎖定6個月。

原因沒有細說,不過很有可能是系統判定流程異常,採取了規避惡意

系統無法將true賦值給變數lastName

的防禦性手段。

因為名字叫True,她被蘋果iCloud伺服器拒絕了

過去的幾天,她都在不斷地向蘋果公司申訴,和AppleSupport周旋,平均每天要花兩三個小時。

但是問題根本解決不了,iCloud服務費卻依然再收。

當然,這也怪不得蘋果,true在程式碼中,畢竟已經用了幾十年。

而大家分析,蘋果的程式碼中,沒有強制將所有進入lastName的值識別為字串的機制。

所以解決這個問題,要麼在輸入時給名字前後加單引號,要麼真的只能改名了。

SQL注入

程式設計師中流傳著一個經典的笑話

那些比“true”還難搞的名字

因為名字叫True,她被蘋果iCloud伺服器拒絕了

小孩名叫

那些比“true”還難搞的名字

,結果把整個學校的學生資料都搞沒了。

這下你們應該明白對輸入做淨化處理有多重要吧??

不少人都說,這次的事件,簡直就是現實版Bobby Tables。

除了true,還有很多人的名字都把系統搞崩潰過。

比如,有姓

Bobby Tables

的、有姓

Robert’); DROP TABLE students

的,當然還有姓“Null”的。

Null這個姓還並不罕見,很多人出門連買機票都很困難。外媒報道過一位Jennifer Null,結婚後改了姓,才能正常使用各種服務。

推特上,有一位從荷蘭來的程式設計師小姐姐,她的姓氏是

Root

,當年畢業入職時,公司用bash script建立新員工賬號。

因為名字叫True,她被蘋果iCloud伺服器拒絕了

結果,操作時沒有在名字上加引號,姓氏中的空格直接搞崩了整個指令碼。

因為名字叫True,她被蘋果iCloud伺服器拒絕了

其實,這種問題,除了給使用者本人帶來諸多不便,在系統安全上也存在很大的安全隱患。

就像很多人提醒的那樣,每一個字串的誤識別,都是駭客可以利用的SQL注入攻擊機會。

好在,我們中國使用者不用擔心這個問題~

參考連結:

https://twitter。com/RachelTrue/status/1368004197166108676