Я знаю, что нецелесообразно использовать eval() для ненадежных входных данных, но я хочу посмотреть, где этот очиститель дает сбой. Он использует белый список, чтобы разрешить только безобидные встроенные функции, и немедленно завершает работу, если вызываются какие-либо свойства dunder. (Примечание: причина, по которой он ищет строку .__, а не только __, заключается в том, что я хочу разрешить такие вещи, как foo.bar__baz).
Re: «Почему вы хотите это сделать?» Я хочу иметь возможность фильтровать объекты Python на основе пользовательского ввода. Эти объекты являются «полезными нагрузками» для «сеансов» в приложении, что позволяет пользователям фильтровать сеансы на основе произвольных выражений в содержимом полезных данных, например len(payload.things) > 12 — была бы полезная функция.
Поэтому мой вопрос: какая входная строка позволит злоумышленнику получить доступ к данным «вне» eval, т.е. переменные в скрипте или доступ к ОС?
Я знаю, что нецелесообразно использовать eval() для ненадежных входных данных, но я хочу посмотреть, где этот очиститель дает сбой. Он использует белый список, чтобы разрешить только безобидные встроенные функции, и немедленно завершает работу, если вызываются какие-либо свойства dunder. (Примечание: причина, по которой он ищет строку .__, а не только __, заключается в том, что я хочу разрешить такие вещи, как foo.bar__baz). [code]def safe_eval(code: str) -> Any | None: if '.__' in code: raise ValueError
return eval( code, globals={ '__builtins__': { builtin : getattr(__builtins__, builtin) for builtin in allowed_builtins } }, locals={}, ) [/code] Re: «Почему вы хотите это сделать?» Я хочу иметь возможность фильтровать объекты Python на основе пользовательского ввода. Эти объекты являются «полезными нагрузками» для «сеансов» в приложении, что позволяет пользователям фильтровать сеансы на основе произвольных выражений в содержимом полезных данных, например len(payload.things) > 12 — была бы полезная функция. Поэтому мой вопрос: какая входная строка позволит злоумышленнику получить доступ к данным «вне» eval, т.е. переменные в скрипте или доступ к ОС?
Я знаю, что нецелесообразно использовать eval() для ненадежных входных данных, но я хочу посмотреть, где этот очиститель дает сбой. Он использует белый список, чтобы разрешить только безобидные встроенные функции, и немедленно завершает работу, если...
Существует требование, согласно которому необходимо внести в белый/черный список определенную группу методов в GRAAL VM. Например, если мне нужно внести в черный или белый список API Java IO, можно ли это сделать или как это сделать?
Я пытаюсь получить доступ к / как неаутентифицированный пользователь. Я реализовал только SecurityFilterChain и @Controller, которые только отображают этот запрос. До сих пор я пробовал разные варианты, но остановился на самом простом, который, как...
Я пытаюсь получить доступ к / как неаутентифицированный пользователь. Я реализовал только SecurityFilterChain и @Controller, которые только отображают этот запрос. До сих пор я пробовал разные варианты, но остановился на самом простом, который, как...
Я пытаюсь получить доступ к / как неаутентифицированный пользователь. Я реализовал только SecurityFilterChain и @Controller, которые только отображают этот запрос. До сих пор я пробовал разные варианты, но остановился на самом простом, который, как...