請考慮以下代碼片段。從安全的角度來看,這段代碼可以接受嗎? 假設$ action和$ data變量被設計爲從用戶接受,並且啓用了register_globals 。從安全角度可接受的PHP代碼?
<?php
if(common::IsUserAdmin($userID))
{
$isAdmin = true;
}
$data = common::Validate_And_Return_Input($data)
Switch($action)
{
case 「add」:
common::addSomething($data);
break;
case 「delete」:
if($isAdmin)
{
common::deleteSomething($data);
}
break;
case 「edit」:
if($isAdmin)
{
common::editSomething($data);
}
break;
default:
echo 「Bad action.」;
}
?>
如果啓用了register_globals,那麼就安全性而言任何內容都是不可接受的。 – BoltClock
常見的做法是什麼? '$ action'從哪裏來?你的格式在哪裏(乾淨易讀的代碼是安全性的第一步,因爲它會更容易審覈)...... – ircmaxell
如果register_globals已啓用,我可以只在查詢字符串上傳遞'?isAdmin = 1',並繞過一些授權檢查...? –