У каждого своя философия безопасности. Разработка собственной философии жизненно важна. Именно по этой причине Брюс Шнайер так популярен, и я читаю каждую запись в его блоге.
В нынешнем состоянии безопасности ландшафт усеян системами безопасности, которые терпят неудачу. Я считаю, что это происходит из-за следующей цитаты.
"То, что я не могу создать, я не понять".
- Ричард Фейнман
Изучение того, как взломать программное обеспечение, является самым важным шагом в изучении того, как защитить его от атак. Вы должны найти уязвимости в программном обеспечении и написать код эксплойта.
Это своего рода огромное поле. Люди делают из этого карьеру на всю жизнь. Как новичок, вы захотите изучить:
Это должно быть хорошим началом.
Классическая статья 'Smashing the Stack for Fun and Profit' является обязательной для прочтения.
В ней рассматриваются переполнения буфера - очень распространенная эксплуатация. Хотя это относительно низкоуровневая проблема, понимание переполнения буфера, безусловно, является первым шагом в изучении безопасности.
Лучше всего начать с OWASP (Open Web Application Security Project). У них есть множество ресурсов, в том числе десятка лучших по OWASP, в том числе 10 наиболее критических уязвимостей / рисков для веб-приложений и их Руководство по разработке безопасного кода, которое можно прочитать в Интернете (вики) или загрузить в формате PDF.
У них также есть Web Goat, уязвимое веб-приложение, которое люди могут загрузить и поиграть, чтобы узнать об уязвимостях, о том, как они работают, и о том, как лучше всего их исправить. Это довольно интересно, и в нем есть советы и решения.
Они также организуют конференции (посмотрите видеосеанс на веб-сайте, они обычно публикуют видео и слайды выступлений), а отделения в разных городах организуют встречи, на которых люди обсуждают интересные аспекты безопасности веб-приложений. Вам следует подумать о том, чтобы присоединиться к одному из тех, кто находится в вашем районе.
Всю информацию можно найти на веб-сайте OWASP: http://www.owasp.org
Языки не имеют значения, на самом деле, безопасность - это больше подход, чем реализация. Вы можете использовать множество языков и фреймворков для написания интернет-приложений, и защита приложений должна быть встроенной, а не наложенной сверху. Если вы хотите защитить существующие веб-сайты, это включает в себя переписывание уязвимого кода или установку брандмауэра веб-приложения между приложением и Интернетом.
Вам лучше сначала сосредоточиться на концепциях и научиться применять их на языках по вашему выбору. Жизненный цикл безопасной разработки Microsoft и проделанная ими работа по моделированию угроз - это еще кое-что, что следует изучить, поскольку оно охватывает его встраивание с самого начала и создание циклов обратной связи с каждой итерацией разработки.
(Да, еще я написал книгу о безопасности ASP.NET ухмылка )
Один из наиболее важных уроков, которые следует усвоить при реализации безопасности в любом приложении, - это НЕ использование самодельных систем безопасности - вы всегда в конечном итоге делаете приложение менее защищенным .
Не пытайтесь написать новый алгоритм хеширования, метод потокового шифрования или любой из 100 других элементов.
Всегда используйте хорошо известные, хорошо протестированные модули и алгоритмы, такие как OpenSSL , Шифрование Blowfish и хэши паролей с солью .