Обеспечение безопасности данных
Обновлен: Ноябрь 2007
Приложения, имеющие дело с важными данными или принимающие какие-либо решения в области безопасности, должны хранить эти данные под своим контролем и не должны позволять потенциально вредоносному коду напрямую к ним обращаться. Лучшим способом защиты данных в памяти является объявление этих данных как закрытых или внутренних переменных (область действия ограничена текущей сборкой). Однако следует иметь в виду, что доступ возможен даже к таким защищенным данным.
Используя механизмы отражения, код с высоким доверием, способный ссылаться на данный объект, может получать или задавать закрытые члены.
Используя сериализацию, код с высоким доверием может эффективно получать и задавать закрытые члены при условии, что он имеет доступ к соответствующим данным в сериализованной форме объекта.
Считывание этих данных возможно в режиме отладки.
Убедитесь, что никакие из ваших собственных методов или свойств не открывают непреднамеренно доступ к этим данным.
В некоторых случаях данные могут быть объявлены "защищенными", и доступ к ним ограничен самим классом и производными от него. Однако следует принять следующие дополнительные меры предосторожности, связанные с расширением доступа.
Проконтролируйте, какому коду позволено производить наследование от данного класса, разрешив такое наследование исключительно коду текущей сборки либо использовав декларативную безопасность, описанную в разделе Безопасность доступа к методам, чтобы требовать некоторого удостоверения или особых разрешений для возможности наследования от вашего класса.
Убедитесь, что во всех производных классах реализована аналогичная защита, либо они являются запечатанными.