因為名字叫True,她被蘋果iCloud伺服器拒絕了
賈浩楠 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
國外的一個蘋果使用者,申請iCloud服務,被匪夷所思的原因拒絕了。
不但拒絕,她的ID還直接被封了6個月。
這一切,都是因為她的名字裡有個
true
。
而且,這個問題還真不好辦,推特上一位工齡30年的老程式設計師勸她:
解決這個問題,最好的辦法還是改名…
一個“true”就能干擾到蘋果系統?踩到這個坑的使用者,真的只能改名嗎?
“命犯程式設計”的尷尬
眾所周知,在程式語言中,
“命犯程式設計”的尷尬
(真)是一個邏輯值,與“false”相對。true在程式設計語句中代表1或大於1的數,反之false代表0或null。
而這位不幸的大姐,名叫
true
,是美國的一位演員、模特。
True作為姓氏確實很罕見,但是這個好聽的名字在申請iCloud時,卻成了大麻煩。
她在輸入名字時,姓氏中的t,沒有大寫,直接敲上了“true”。
而在蘋果返回的結果中,可以看到
Rachel True
。
也就是說,本來應該作為字串的“true”,直接被系統認定成了布林值。
這個錯誤,導致iCloud的申請程序終止。
並且,據Rachel True說,蘋果還直接將她的ID鎖定6個月。
原因沒有細說,不過很有可能是系統判定流程異常,採取了規避惡意
系統無法將true賦值給變數lastName
的防禦性手段。
過去的幾天,她都在不斷地向蘋果公司申訴,和AppleSupport周旋,平均每天要花兩三個小時。
但是問題根本解決不了,iCloud服務費卻依然再收。
當然,這也怪不得蘋果,true在程式碼中,畢竟已經用了幾十年。
而大家分析,蘋果的程式碼中,沒有強制將所有進入lastName的值識別為字串的機制。
所以解決這個問題,要麼在輸入時給名字前後加單引號,要麼真的只能改名了。
SQL注入
程式設計師中流傳著一個經典的笑話
那些比“true”還難搞的名字
。
小孩名叫
那些比“true”還難搞的名字
,結果把整個學校的學生資料都搞沒了。
這下你們應該明白對輸入做淨化處理有多重要吧??
不少人都說,這次的事件,簡直就是現實版Bobby Tables。
除了true,還有很多人的名字都把系統搞崩潰過。
比如,有姓
Bobby Tables
的、有姓
Robert’); DROP TABLE students
的,當然還有姓“Null”的。
Null這個姓還並不罕見,很多人出門連買機票都很困難。外媒報道過一位Jennifer Null,結婚後改了姓,才能正常使用各種服務。
推特上,有一位從荷蘭來的程式設計師小姐姐,她的姓氏是
Root
,當年畢業入職時,公司用bash script建立新員工賬號。
結果,操作時沒有在名字上加引號,姓氏中的空格直接搞崩了整個指令碼。
其實,這種問題,除了給使用者本人帶來諸多不便,在系統安全上也存在很大的安全隱患。
就像很多人提醒的那樣,每一個字串的誤識別,都是駭客可以利用的SQL注入攻擊機會。
好在,我們中國使用者不用擔心這個問題~
參考連結:
https://twitter。com/RachelTrue/status/1368004197166108676