我目前使用isset()
檢查每個GET和POST變量,並在isset()
返回false時拋出異常。詳細的異常/錯誤消息是否存在安全風險?
例1:
if(!isset($_GET['some_var']))
throw new Exception('GET variable [some_var] is not set.');
$someVar = $_GET['some_var'];
例2:
if(!isset($_GET['some_num']))
throw new Exception('GET variable [some_num] is not set.');
if(!ctype_digit($_GET['some_num']))
throw new Exception('GET variable [some_num] is not a number.');
$someNum = $_GET['some_num'];
在我的生產應用程序,我有一個全球性的異常處理程序,它的帖子異常和錯誤日誌文件,然後重定向到一個通用的道歉頁面。
這是一個好的做法?描述性的異常和錯誤信息(如高於安全風險的信息)(黑客是否有可能讀取異常通知,然後使用該信息來操作我的腳本)?
謝謝!
由於它看起來像只是顯示GET參數的內容,通過查看URL可用的數據,我沒有看到除了引起注意之外,這可能是一個安全風險。 編輯:沒有意識到你在錯誤消息中區分不同的數據類型 - 我想這個知識可能會被利用到某個端點,但如果你正在消毒輸入,我想不出如何。 – junkforce 2010-06-30 04:08:43