Главная > Uncategorized > OWASP Secure Coding Practices Quick Reference Guide

OWASP Secure Coding Practices Quick Reference Guide

В сообществе OWASP недавно появился новый проект, который называется OWASP Secure Coding Practices Quick Reference Guide, что можно перевести как «Краткое справочное руководство по приемам безопасного программирования». Цель документа — собрать основные приемы безопасного программирования без приявязки к конкретным технологиям в виде контрольного перечня. Предполагается, что такой перечень можно будет эффективно использовать во время разработки программного обеспечения.

Давайте сравним новый Reference Guide и существующий OWASP Development Guide. Development Guide подробно описывает, как именно надо реализовывать стандартные механизмы обеспечения безопасности веб-приложения: аутентификацию, авторизацию, проверку входных данных, протоколирования работы и т.п. Эти сведения разработчик веб-приложения должен узнать и понять до начала проекта.

Очевидно, что никакой нормальный человек не будет учить наизусть Development Guide. Соответственно, у разработчика возникает необходимость время от времени обращаться к некоторому check-list’у, чтобы проверить, а не забыл ли он чего. Чем компактнее и удобнее будет этот список, тем больше вероятности, что разработчик действительно будет им пользоваться. Development Guide на 300 страниц, таким образом, не очень «плодотворная дебютная идея» (с). И вот тут на сцену под звуки имперского марша гордо выходит он, Reference Guide, занимающий всего 13 страниц (а за минусом титула, оглавления, введения и прочего — всего 6!). Скачать документ можно отсюда. На документе стоит версия 1.1, так что он пока сыроват, но в перспективе, надеюсь, превратиться в отличное подспорье.

Для иллюстрации приемов безопасного программирования из Reference Guide привожу несколько правил из секции «Data Validation».

Проверка данных на корректность:

  • Проверка данных должна осуществляться на доверенной системе (на сервере).
  • Необходимо разделить все источники данных веб-приложения (HTTP, БД, файловая система и т.д.) на доверенные и недоверенные. Данные, полученные из недоверенных источников, должны быть проверены на корректность.
  • Все данные, подлежащие проверке на корректность, должны быть приведены к принятой в системе кодировке.
  • Все данные, полученные от клиента, подлежат проверке на корректность. В их числе — значения полей форм, URI и HTTP-заголовки (особенно параметры Cookies).
  • Проверка строковых данных должна осуществляться относительно списка разрешенных символов (white-listing).
  • Все потенциально опасные символы (, «, ‘, %, (, ), &, +, \, ;), разрешенные семантикой приложения, должны быть соответствующим образом закодированы или экранированы.
  • Необходимо осуществлять проверку данных на соответствие ожидаемому типу.
  • Необходимо осуществлять проверку числовых даных на допустимые значения.
  • Необходимо осуществлять проверку длины строковых данных.
  • При выводе клиенту специальных HTML-символов, которые были получены из недоверенного источника, должно осуществляться кодирование с учетом контекста документа, в который они помещаются. Подробности тут.
  • Если стандартная процедура проверки корректности входных данных не рассматривает разделители как опасные символы, то соответствующие проверки следует выполнить отдельно:
    1. проверить наличие нулевых байтов (%00)
    2. проверить наличие символов конца строки (%0d, %0a, \r, \n)
    3. проверить наличие специальных символов путей файловой системы (../ или ..\)

Я планирую по мере сил перевести этот документ на русский язык и выложить на OWASP’е. Если у кого-то есть время и желание поучаствовать в переводе, взяв какую-то секцию — я буду очень рад. Присоединяйтесь к OWASP!

Реклама
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: