Что такое безопасность?
Безопасность – это относительная мера, а не абсолютный стандарт.
К сожалению, в большинстве программных проектов безопасность рассматривается как простое требование. Это безопасно? Ответ на этот вопрос так же субъективен, как вопрос, горячо ли что-то.
Накладные расходы на обеспечение безопасности должны быть разумными.
Достижение адекватного уровня безопасности для большинства приложений является простым и недорогим. Однако если информация, которую необходимо защитить, очень ценна или требования к безопасности очень строгие, вам придется заплатить больше, чтобы повысить уровень безопасности. Эти затраты должны быть включены в бюджет проекта.
Простота использования должна быть разумной для достижения безопасности.
Очень распространенное явление заключается в том, что, хотя безопасность WEB-приложения значительно повышается, простота использования также значительно снижается. Пароли, сроки действия SESSION и средства управления доступом — все это будет создавать препятствия для законных пользователей. Иногда необходимо обеспечить соответствующую безопасность приложения, но это не единственное решение для всех приложений. При обеспечении соблюдения правил безопасности разумно уделять больше внимания законным пользователям.
Безопасность должна быть частью проекта.
Если вы не учитываете безопасность при разработке своего приложения, вам придется постоянно находить новые уязвимости безопасности. Тщательно написанные программы не могут компенсировать плохой дизайн.
Основные шаги в приложении в основном предназначены для законных пользователей.
Безопасная конструкция — это только часть решения. Во время разработки, когда начинается кодирование, необходимо учитывать легитимных пользователей приложения. Как правило, цель состоит в том, чтобы приложение работало так, как задумано, при этом необходимо реализовать соответствующую функциональность приложения, которая не делает приложение более безопасным.
Тренируйтесь.
Те из вас, кто читает это руководство, обеспокоены вопросами безопасности, и хотя это звучит как клише, это важный шаг. В Интернете или в книгах доступно множество ресурсов, многие из которых включены в репозиторий PHP Security Alliance: http://phpsec.org/library/ .
Сначала отфильтруйте все внешние данные.
Фильтрация данных — краеугольный камень безопасности веб-приложений на любом языке и на любой платформе. Инициализация переменных и фильтрация всех данных, полученных извне, позволяет получить вдвое больший результат с вполовину меньшими затратами, а менеджер предотвращает возможные крупные уязвимости безопасности. Белый список лучше черного. Это означает, что все данные следует считать незаконными до тех пор, пока их законность не будет доказана (лучше, чем считать все данные законными до тех пор, пока не будет доказано, что их незаконность).