Есть ли возможные проблемы с безопасностью при использовании system.dll через веб-сервис? - PullRequest
3 голосов
/ 06 февраля 2011

Мне любопытно, какой ущерб кто-то может нанести простым доступом к пространству имен System.dll в C #.

Я играл с динамической компиляцией кода и создал простой веб-сайт, который позволяет мне печатать на C # коде. Это передается через веб-сервис классу, который выполняет и выполняет код в новом потоке и возвращает (код должен возвращать строку) результат через WS и отображается на веб-странице.

Сейчас у меня есть простая проверка, чтобы прервать поток, если он работает дольше 5 секунд, чтобы гарантировать, что что-то простое, например, бесконечный цикл, не приведет к сбою.

Говоря «гипотетически», если бы я опубликовал это веб-приложение, кто-нибудь мог нанести серьезный ущерб любому веб-серверу, имея доступ только к System.dll?

** бонусных очков для какого-то примера! :)

Ответы [ 2 ]

6 голосов
/ 06 февраля 2011
  1. Вы можете создать новый поток (mscorlib.dll), который не будет соответствовать вашему 5-секундному правилу, загрузить двоичный файл удаления с помощью WebClient (System.dll) и выполнить его с помощью Process (System.dll).
  2. Простой цикл, создающий тысячи вечно зацикливающихся потоков, потребовал бы много времени процессора.
0 голосов
/ 06 февраля 2011

Нет, если вы используете частичное доверие и ограничиваете разрешения соответствующим образом.Если вы этого не сделаете ... ну, возможности System.dll и mscorlib.dll ограничены, поскольку именно здесь реализовано отражение.

...