Есть ли возможные проблемы с безопасностью при использовании system.dll через веб-сервис?
Мне любопытно, какой ущерб кто-то может нанести простым доступом к пространству имен System.dll в C#.
Я играл с динамической компиляцией кода и создал простой веб-сайт, который позволяет мне вводить код на C#. Это передается через веб-сервис классу, который выполняет и выполняет код в новом потоке и возвращает (код должен возвращать строку) результат через WS и отображается на веб-странице.
Прямо сейчас у меня есть простая проверка, чтобы прервать поток, если он работает более 5 секунд, чтобы гарантировать, что что-то простое, например, бесконечный цикл, не приведет к сбою.
Говоря "гипотетически", если я опубликую это веб-приложение, может ли кто-нибудь нанести серьезный ущерб любому веб-серверу, имея доступ к System.dll?
** бонусные баллы за какой-то пример!:)
2 ответа
- Вы можете создать новый поток (mscorlib.dll), который не будет соответствовать вашему 5-секундному правилу, загрузить двоичный файл для удаления с помощью WebClient (System.dll) и выполнить его с помощью Process (System.dll).
- Просто цикл, который создает тысячи потоков с постоянным циклом, потребует много процессорного времени.
Нет, если вы работаете с частичным доверием и ограничиваете разрешения соответствующим образом. Если вы не... ну, есть несколько ограничений для возможностей System.dll
а также mscorlib.dll
, поскольку именно там осуществляется отражение.