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