МимокрокодяmishkatormozNovember 22 2016, 21:57:06 UTC
Ну кстати правильно делает - eval на данные из внешнего мира так себе план. Я бы вот не взялся доказывать, что через парсер нельзя никакую гадость пропихнуть. Надо ли обходить реально все функции из всех модулей - то вопрос отдельный.
Re: МимокрокодяelglinNovember 23 2016, 06:50:32 UTC
Во-первых, данные не совсем из внешнего мира, они представляют собой "программу" на псевдоязыке. Во-вторых, санитизировать ввод там достаточно просто. "[A-Za-z]+\.[A-Za-z]+", при этом до точки нечто, что можно после обработки скормить в Import-Module (и радостно свалиться в Exception, если что не так), а после точки нечто из фиксированного набора, по которому все равно switch.
Оно понятно, что в изначальном посте этих подробностей не было. Я сам не сторонник eval-а (строго говоря, тут даже не eval, а "& $func_name", ибо PowerShell же), но тут имхо как раз тот случай "динамического кода", для которого он годен.
Comments 3
армейским способом. в любой непонятной ситуации строй лс на взлетке, а потом уж можно подумать что делать)))
Reply
Reply
Во-вторых, санитизировать ввод там достаточно просто. "[A-Za-z]+\.[A-Za-z]+", при этом до точки нечто, что можно после обработки скормить в Import-Module (и радостно свалиться в Exception, если что не так), а после точки нечто из фиксированного набора, по которому все равно switch.
Оно понятно, что в изначальном посте этих подробностей не было.
Я сам не сторонник eval-а (строго говоря, тут даже не eval, а "& $func_name", ибо PowerShell же), но тут имхо как раз тот случай "динамического кода", для которого он годен.
Reply
Leave a comment