Apple 最近釋出的 iOS 7.0.6 解掉了一個安全性問題。簡單來說在 Apple 的程式碼裡出現了大概像這樣的程式:


// ...
if (condition) 
    goto fail; 
    goto fail; 
// ...

而在 C 語言裡第二個 goto fail; 會被執行到。

C 語言我不會, goto 也很久沒用了,不過類似的架構在 PHP 也是會有問題的:


// ...
if (false) 
    echo "false 1"; 
    echo "false 2"; 
// ...

這樣子 false 2 是會被 echo 印出來的。

目前想到的方法是透過 PHP CodeSniffer 檢查,強制 if-elseif-else 使用大括號的語法,如果是省略大括號的語法就回傳 Error 值。目前 PSR-2 的規範是對於所有 control structures 都要求要使用大括號。


Tags: Apple, gotofail, iOS, CodeSniffer, goto, PSR-2


, , , , ,
創作者介紹

旅行的記憶

repeat<')">< 發表在 痞客邦 PIXNET 留言(0) 人氣()