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 都要求要使用大括號。
文章標籤
全站熱搜
留言列表