Какова цель CAS (Code Access Security)?

Я участвовал во многих веб-приложениях, но никогда не использовал CAS, возможно, никогда не чувствовал необходимости использовать то же самое.

Когда нужно использовать CAS? Действительно ли люди используют его в своих приложениях?


person MOZILLA    schedule 07.01.2009    source источник
comment
см. также stackoverflow.com/questions/1566934/   -  person Ian Ringrose    schedule 22.10.2009


Ответы (8)


CAS действительно полезен (так сказать) только в настольных приложениях, где вы хотите ограничить то, что приложение, запущенное из сети (например), может делать на локальном компьютере. Я обнаружил, что обман с CAS вызывает большую бессмысленную головную боль даже в этих обстоятельствах. Конфигурация по умолчанию, как правило, наиболее разумна.

Очевидно, что этот тип модели гораздо менее полезен для веб-приложения, поскольку вы неявно доверяете всему коду в приложении.

person TheSmurf    schedule 07.01.2009
comment
Я не согласен. Я всегда стараюсь запускать настольные приложения с полным доверием, поскольку клиент в любом случае уязвим для неуправляемых приложений. Одной из сред, в которой может возникнуть проблема с CAS, является размещенное веб-приложение - некоторые хостинг-провайдеры предлагают только среду среднего доверия. - person Joe; 07.01.2009
comment
Я тоже не согласен, это как раз наоборот. В веб-приложении нельзя доверять коду, потому что он использует вводимые пользователем данные, которые можно подделать. Именно поэтому CAS с самого начала используется почти исключительно в веб-приложениях. Запуск вещей локально, как и в случае с настольными приложениями, означает, что вы контролируете ситуацию, а CAS бесполезен (обычно). Я объясняю это более подробно здесь: stackoverflow.com/questions/1566934/ - person Abel; 22.10.2009
comment
Если вы когда-либо использовали приложение, которое подключается к Интернету, вы НЕ контролируете код на своем компьютере. Но вы упустили суть. CAS существует для того, чтобы разрешить запуск CODE, которому не обязательно доверять, а не в качестве общего исправления для возможных пользовательских эксплойтов. - person TheSmurf; 23.10.2009

Думаю, я должен быть одиноким голосом в пустыне и не согласен с другими респондентами здесь.
Как я уточнил в мой ответ на аналогичный вопрос несколько месяцев назад, есть определенные сценарии, в которых CAS это путь. Конечно, это применимо только в том случае, если вы очень заботитесь о безопасности и имеете дело с чувствительной системой, И, учитывая, что это просто обеспечивает дополнительный уровень защиты, вы, вероятно, не доберетесь до того места, где вам это нужно, пока вы устраняете все другие серьезные проблемы в своем приложении.
Опять же, CAS дает вам возможность ограничивать то, что может делать ваше ПРИЛОЖЕНИЕ, а не только ваших пользователей, и очень детально.

person AviD    schedule 26.02.2009

Я никогда не видел, чтобы его использовали.

Он существует исключительно для того, чтобы вы могли указать максимальный уровень безопасности, на котором должен работать ваш код. Это больше механизм защиты от судебных исков, чем что-либо еще, в том смысле, что вы можете заявить, что ваш код не может быть авторизован для выполнения определенной функции. .

Лично я считаю, что это пустая трата времени, поскольку он не обеспечивает реальной защиты базовой операционной системы.

Вот дополнительная информация об этом от Microsoft: http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx

person NotMe    schedule 07.01.2009

Единственное место, где я когда-либо сталкивался с CAS, - это Sharepoint, где он используется для ограничения того, к чему пользовательская сборка в каталоге BIN может иметь доступ (например, объектная модель sharepoint). Многие люди думают, что CAS слишком сложен и не стоит усилий, поэтому в конечном итоге они бросают сборку в GAC. Но если вы это сделаете, то вам лучше тщательно изучить код на предмет каких-либо угроз безопасности.

person barneytron    schedule 07.01.2009

Я однажды столкнулся с этим, когда изучал WPF. Он использовался в этом руководстве по судоку для загрузки подключаемых модулей. от других пользователей. Для подключаемого модуля был создан специальный домен с ограниченными правами доступа, а взаимодействие осуществлялось с помощью удаленного взаимодействия .NET. Учебное пособие дает хорошее представление о безопасной загрузке плагинов.

person Morten Christiansen    schedule 07.01.2009

VSTO - полезная технология, позволяющая запускать управляемый код, написанный на языке .NET, из документов Office. вместо использования VBA. Это требует использования caspol на клиентских машинах двумя способами:

  • Permission Office запускает библиотеки DLL из места, где они развернуты.

  • Разрешение Office на запуск DLL из места, где был открыт документ Office.

Я обнаружил, что caspol - это кошмар, и я думаю, что, как и Makefiles, только 1 сценарий caspol был написан с нуля.

person RossFabricant    schedule 07.01.2009

Я должен согласиться с другими мнениями здесь CAS - одна из тех вещей, которые могут хорошо выглядеть на бумаге, но я никогда не видел, чтобы она использовалась в серьезных LOB-приложениях, и, вероятно, никогда не буду. Что меня поражает, так это то, что сейчас люди часто задают вопросы, связанные с CAS, на собеседовании, это совершенно бессмысленно. :)

person Dmitri Nesteruk    schedule 07.01.2009

Примером CAS является приложение WPF, размещенное в браузере (.xbap).

Проблема заключается в том, как защитить клиентов от управляемого кода, запущенного в домене приложений, размещенном в браузере.

Для этого WPF (точнее, PresentationHost.exe) создает домен приложения с ограниченными разрешениями. Код, работающий в его границах, работает с ограниченным набором разрешений (например, без ввода-вывода файла, без доступа к реестру, только безопасная печать и т. Д.).

Другая точка зрения, которую следует учитывать при размышлениях о полезности CAS, - это обставить кого-то, кто пишет библиотеку, которая будет установлена ​​на клиентских машинах. Как вы защищаете клиентские машины и их сети от частично доверенного кода, запущенного в браузере, например. как часть приложения WPF, вызывающего эти библиотеки? CAS помогает решить головоломку, выдвигая соответствующие требования, поэтому частично доверенный код имеет доступ только к безопасным функциональным возможностям.

person Ariel    schedule 24.06.2009