Поделиться через


Пример контрольного списка принятия кода в ИТ-организациях

Веб-сайты, основанные на Microsoft Office SharePoint Server 2007, часто включают пользовательские решения. Способность настраивать сайты с помощью добавления пользовательских решений придает Office SharePoint Server 2007 мощность и гибкость. Однако, неправильно разработанный или внедренный исполняемый модуль, запущенный в ферме SharePoint, может нанести ущерб даже вне пределов веб-приложения, для которого он предназначался. Неправильно внедренные пользовательские решения могут внести риски для безопасности или производительности, повысить стоимость поддержки, усложнить развертывание и понизить производительность.

Так как влияние установки пользовательских решений на сервер фермы SharePoint может быть как позитивным, так и негативным, рекомендуется тщательно оценивать пользовательские решения перед их развертыванием в производственной среде. Следует принять во внимание следующие факторы:

При представлении требований соответствия разработки решения общим рекомендациям рекомендуется предложить разработчикам заполнить контрольный список проверки соответствия кодирования и тестирования их решений данным рекомендациям.

Чтобы убедиться, что развертываемые решения обеспечивают заявленные преимущества и не подвергают предприятие излишним рискам, можно воспользоваться следующим образцом контрольного списка допустимости кода. Используйте этот список как базовый при создании своего списка для проверки качества решений, планируемых для развертывания. В процессе выполнения проверки разработанного решения собственный контрольный список допустимости кода может быть хорошим обучающим средством. Предоставив разработчикам контрольный список до внедрения их настроек, можно довести до их сведения ожидания по качеству решений, которые они должны разработать и представить для внедрения.

Важно!

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

В этом разделе:

Ресурсы для рекомендаций по развертыванию SharePoint

В этом разделе содержится список ресурсов, которые можно предоставить разработчикам, чтобы помочь им в разработке и внедрении решений, отвечающих ИТ-требованиям удобства и простоты использования, поддержки, производительности и безопасности.

Контрольный список допустимости кода

В этом разделе рассматривается создание контрольных списков допустимости кода с точки зрения следующих факторов: безопасность, управление сеансами, проверка, конфиденциальные данные, обработка исключений, веб-части, документирование, общие рекомендации по разработке программного обеспечения. Полная версия контрольного списка, доступная для изменений и печати, представлена в разделе Версия контрольного списка допустимости кода, предназначенная для печати(на английском языке) (https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x419).

Примечание

Контрольные списки, представленные в этом документе, приводятся в качестве образца для создания собственных списков на основании требований организации пользователя. Используйте их как основу для разработки собственного списка.

Безопасность

В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по безопасности.

[ ]

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

[ ]

Входные данные пользователя при отображении кодируются с помощью протокола IOSec.

[ ]

Кодировка символов настраивается сервером (рекомендуется кодировка ISO-8859-1).

[ ]

Пароли в виде обычного текста не присутствуют в файлах Web.config, Machine.config или в других файлах, содержащих параметры настройки. Для шифрования учетных данных используются такие служебные программы, как Aspnet_setreg.exe и Trustee, или параметры удостоверения в AppPool на IIS 6.0 или IIS 7.0.

[ ]

Если файлы cookie содержат конфиденциальные данные, то они помечены как надежные.

[ ]

Поверхности ввода в веб-частях и другие настройки включают проверку границ, проверку целостности вводимых данных и соответствующую обработку исключений для защиты от многосайтовых скриптов и SQL-включений.

[ ]

В структуре учитываются потенциальные проблемы канонизации.

[ ]

Исключите использование AllowUnsafeUpdates. Используйте ValidateFormDigest(), и при необходимости используйте повышенные привилегии для взаимодействия с объектами SharePoint. Если использование AllowUnsafeUpdates неизбежно, убедитесь, что значение AllowUnsafeUpdates установлено на "False" в блоке try-catch-finally, или используйте метод Dispose() (необходимый для интерфейса IDisposable), чтобы исключить проблемы с обеспечением безопасности.

Управление сеансами

В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по управлению сеансами.

[ ]

Состояние сеанса строгое, непредсказуемое и защищенное от несанкционированного доступа или атак воспроизведения.

[ ]

Время жизни сеанса ограничено максимум 30 минутами при отсутствии активности.

[ ]

Идентификаторы сеанса не передаются в URL-адрес, а также не используется функция ASP.NET "сеанс без файлов cookie".

[ ]

Служба состояния сеанса отключена или не используется.

Проверка

В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по проверке ввода.

[ ]

Проверка ввода применяется ко всем определенным точкам входа (включая поля форм, строки запросов, файлы cookie, заголовки HTTP и параметры веб-службы).

[ ]

Параметр ASP.NET validateRequest включен, если это возможно.

[ ]

Данные проверяются на тип, длину, формат и диапазон.

[ ]

Система безопасности не использует проверку на стороне клиента. Проверка выполняется на стороне сервера.

[ ]

Приложение последовательно и повсеместно использует стандартизованную проверку ввода, например RegEx.

Конфиденциальные данные

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

[ ]

Приложение не сохраняет конфиденциальные данные в виде открытого текста.

[ ]

Конфиденциальные данные не сохраняются в файлах cookie.

[ ]

Конфиденциальные данные не хранятся в незашифрованном виде, в скрытых полях форм или в строках запросов. Это достигается использованием управления состоянием на стороне сервера.

[ ]

Для защиты конфиденциальных данных во время передачи используются протоколы SSL, IPSEC с шифрованием или предварительное шифрование на уровне приложения.

[ ]

Конфиденциальные данные не кэшируются. Кэширование вывода отключено по умолчанию.

[ ]

Конфиденциальные данные, передающиеся по электронной почте, используют шифрование S/MIME или управление правами на доступ к данным (IRM) в зависимости от получателя.

Обработка исключений

В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по обработке исключений.

[ ]

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

[ ]

Код обработки ошибок наследуется из класса SPException для сохранения согласованности внешнего вида SharePoint и представления ошибок.

[ ]

В случае возникновения ошибки или исключения приложение выполняет безопасный останов.

[ ]

Условия исключений не позволяют пользователю обходить проверки системы безопасности при запуске привилегированного кода.

[ ]

Приложение возвращает клиенту универсальные пользовательские сообщения об ошибках.

[ ]

Код использует обработку исключений. Код перехватывает только известные исключения. Например, не используйте try{} catch(Exception ex){}, пока ошибка не отброшена повторно.

[ ]

Если код использует фильтры исключений, то он не зависит от последовательности их применения (фильтр запускается до блока finally).

[ ]

Сообщения об ошибках приложения не содержат конфиденциальную информацию или информацию, которую можно использовать для атаки.

Веб-части

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

[ ]

Пользовательские веб-части, включая файлы ресурсов, содержатся в компоненте SharePoint и упакованы как решение SharePoint для развертывания.

[ ]

Настройка развертываемых веб-частей позволяет администратору выполнять развертывание на уровне веб-приложения или на более низком уровне.

[ ]

Используйте типовой набор интерфейсов подключения инфраструктуры веб-частей SharePoint для обмена информацией между веб-частями во время выполнения.

[ ]

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

[ ]

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

Документирование

Необходимо предъявлять адекватные требования к документированию, чтобы быть уверенным, что заказанные для развертывания настройки являются устанавливаемыми, поддерживаемыми и тщательно протестированными. Более того, в документации должны быть указаны, должным образом описаны и диагностированы все ошибки, генерируемые пользовательскими настройками. В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по документированию.

[ ]

Пользовательские настройки должны сопровождаться руководством по установке с подробным описанием процессов установки и удаления пакета. Должны прилагаться архитектурные схемы, относящиеся к установке решения. Если в решении не предусмотрена возможность отката, то эта информация должна содержаться в руководстве по установке, чтобы пользователь смог обдумать возможные риски и запланировать восстановление системы.

[ ]

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

[ ]

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

[ ]

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

[ ]

Также может быть предоставлен исходный текст для ускорения проверки и тестирования ИТ-организацией.

[ ]

Настройки, которые содержат обновления по сравнению с развернутыми ранее, должны сопровождаться документацией с описанием изменений, рекомендациями по обновлению настроек и руководством по откату.

Общие рекомендации по разработке программного обеспечения

В этом разделе контрольного списка допустимости кода содержатся элементы, которые помогают убедиться, что решения, представленные для развертывания в среде SharePoint, разработаны с использованием практических рекомендаций по разработке программного обеспечения.

[ ]

Сборки имеют строгие имена (динамически создаваемые сборки веб-страниц ASP.NET в настоящее время не могут иметь строгих имен).

[ ]

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

[ ]

Сборки включают декларативные атрибуты безопасности (с SecurityAction.RequestMinimum) для указания минимальных требуемых разрешений.

[ ]

Сборки с высоким уровнем привилегий отделены от сборок с низким уровнем привилегий.

[ ]

Если сборка используется в среде частичного доверия (например, вызывается из частично доверенного веб-приложения), то привилегированный код находится в отдельной сборке.

[ ]

Для поддержки приложения используйте собственный файл настройки, а не изменения настроек в файле Web.config.

[ ]

Используйте среду .NET Framework 2.0, 3.0, или 3.5.

[ ]

Используйте одну версию .NET Framework. Не смешивайте несколько версий.

[ ]

Код совместим с 64-разрядной архитектурой.

[ ]

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

[ ]

Исключите жестко заданные строки и подписи. Используйте ресурсы или файлы языков.

[ ]

При ссылках на объекты SPWeb или SPSite применяйте оператор using или явный вызов метода .Dispose, чтобы гарантировать правильное использование и размещение объектов памяти.

[ ]

Правильно используйте кэширование, чтобы сократить количество ненужных переходов. Представляйте срок хранения кэша веб-частей как их свойство.

[ ]

При упаковке решения включайте в него политику безопасности доступа к коду и, если необходимо, включите сборку в список безопасных элементов управления в решении.

[ ]

При ведении журнала кода используйте класс Portal Log, чтобы использовать единую службу ведения журнала SharePoint.

[ ]

Если требуется обновить несколько элементов списка с помощью удаленного кода, то используйте для этого веб-службу. Используйте SPListItem.Update(), только если требуется обновить несколько элементов одновременно с помощью локального кода на основе OM.

[ ]

При использовании свойства Count коллекции SPListItemCollection вызывайте его только один раз, а затем сохраняйте в переменной, к которой можно обратиться в цикле. Не вызывайте его в цикле.

[ ]

Решение использует объект AppSettings для внедрения XML-сопоставления (это можно сделать с помощью структуры постоянного хранения параметров в среде .NET 2.0, 3.0, или 3.5). Решение исключает создание пользовательских XML-файлов и строго типизированного объекта для XML-сопоставления.

[ ]

Ведение журнала установки и развертывания в журнале событий позволяет проводить диагностику проблем при установке и удалении.

Загрузите эту книгу

Этот раздел включен в следующую загружаемую книгу для удобства чтения и печати:

Полный список доступных книг см. на веб-странице Загружаемые материалы по Office SharePoint Server 2007.