Witam
Czytam jak niebezpieczny jest eval. Rozumiem dlaczego. Czy zabezpieczeniem będzie przepuszczenie stringa przez regexpa przed przekazaniem do eval? Tylko cyfry oraz znaki matematyczne przechodzą?
Pozdrawiam
Głębicki Radosław
Witam
Czytam jak niebezpieczny jest eval. Rozumiem dlaczego. Czy zabezpieczeniem będzie przepuszczenie stringa przez regexpa przed przekazaniem do eval? Tylko cyfry oraz znaki matematyczne przechodzą?
Pozdrawiam
Głębicki Radosław
https://stackoverflow.com/a/3513475/1639851
Mogę się mylić, bo nie chce mi się za dużo czytać o niebezpieczeństwach eval
, ale ja tam bym poszedł na łatwiznę i zrobił tak jak piszesz - filtr dla tekstu od użytkownika przepuszczający tylko operatory, funkcje matematyczne (sin, cos itd.) i cyfry, a wywołanie eval
zrobiłbym w bloku try:
, bo jak ktoś źle napisze formułkę, np. "5++3"
, to eval
rzuci wyjątkiem.
Jeszcze jedno. Powinieneś jakoś ograniczyć złożoność operacji. Jak ktoś Ci np. dowali jakąś ogromną potęgę (operator **
) to np. się wykosztujesz na usługach chmurowych ;)