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