Мне интересно, какие вещи следует проверять при использовании eval() в PHP для анализа формулы, введенной пользователем, заполняющей форму. Я видел много ответов об eval(), но не все из них, похоже, согласны.Самый безопасный способ использования eval для анализа уравнений, введенных формой
Вот что я собрал:
- Не используйте Eval для строк (это может быть проблемой, так как она является формула мне нужно разобрать)
- Strip вход приходит от формы (я не совсем уверен, что вещи, которые я должен раздеться)
- Eval может или не может быть злым, и представляет собой угрозу безопасности (есть альтернативы для разбора уравнения в строке?)
Что вы думаете, что я должен делать?
EDIT: Я пробовал метод eval, и, хотя он работает, санитария, которую я использовал, не поддерживала более двух операндов. Поскольку мне действительно не хочется писать собственное (возможно, небезопасное) решение для санитарии, я просто собираюсь найти и использовать предварительно написанный математический класс. Спасибо всем за предложения!
Какая формула? Формула PHP? Можете ли вы привести примеры возможных формул? –
Для математических выражений вы могли бы запустить ввод с регулярным выражением, например '^ [0-9 - +/\ *% \^\ (\)] + $'. Это позволит использовать математические выражения типа «1 - (2 * 3 + 1/(2^(11% 4))), но не будет допускать' $ ', символы, символы подчеркивания,' :: ',' -> 'и т. д., что предотвращает использование переменных, функций и классов. –
Примером ожидаемой формулы будет «% U% +% B% -% P%», где все внутри знака процента - это число, загруженное сервером. –