(請注意,這是用戶輸入的,所以我無法對其進行硬編碼)。無論如何,用戶輸入math.php?do = 2 + 2,腳本將作爲結果返回4。另一件事是輸入是嚴格驗證的,所以沒有惡意的可能性。我的測試方法是這樣的PHP:我有一個字符串,它有一個數學運算。我如何運行它?
function testMath($char){
$array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
foreach($char as $chr){
if(!in_array($chr, $array['math'){
return false;
}
}
return true;
}
eval()檢查的東西是否安全?或者我應該忘記從用戶輸入的輸入做數學?
側面說明,PHP拋出
Parse error: parse error in C:\Users\Josh\Desktop\App\html\new.php(24) : eval()'d code on line 1
當我嘗試eval()的東西。怎麼了?
爲什麼你不只是做用戶的使用javascript結束數學?方式風險較小 –
如果在用戶輸入中完成'eval',則會出現一些明顯的安全問題。您的測試看起來沒問題,但您也可能想限制長度。當你叫'eval'時,它看起來像什麼? –
或者使用已經被創建的東西:http://stackoverflow.com/questions/1015242/how-to-evaluate-formula-passed-as-string-in-php – NightHawk