Что должен знать каждый программист о безопасности? [закрыто]

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

var scripts = document.getElementsByTagName( 'script' );
var thisScriptTag = scripts[ scripts.length - 1 ];
421
задан 5 revs, 3 users 50% 3 July 2012 в 16:14
поделиться

7 ответов

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

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

В сети есть несколько отличных книг и статей о том, как сделать ваши приложения безопасными:

Обучение разработчиков лучшим практикам безопасности приложений

Codebashing (платно)

Security Innovation (платно)

Security Compass (платно)

OWASP WebGoat (бесплатно)

548
ответ дан 22 November 2019 в 23:22
поделиться

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

13
ответ дан 22 November 2019 в 23:22
поделиться

Я предлагаю просмотреть CWE / SANS TOP 25 наиболее опасных ошибок программирования . Он был обновлен на 2010 год с обещанием регулярных обновлений в будущем. Также доступна редакция 2009 .

Из http://cwe.mitre.org/top25/index.html

25 самых опасных ошибок программирования CWE / SANS 2010 года - это список наиболее распространенных и критических ошибок программирования, которые могут привести к серьезным уязвимостям программного обеспечения. Их часто легко найти и легко использовать. Они опасны, потому что часто позволяют злоумышленникам полностью завладеть программным обеспечением, украсть данные или вообще предотвратить работу программного обеспечения.

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

23
ответ дан 22 November 2019 в 23:22
поделиться

Каждый программист должен знать, как писать код эксплойта.

Не зная, как эксплуатируются системы, вы случайно останавливаете уязвимости. Знание того, как патч-код, абсолютно бессмысленно, если вы не знаете, как тестировать свои патчи. Безопасность — это не просто куча мыслей экспериментов, вы должны быть научными и проверять свои эксперименты.

70
ответ дан 22 November 2019 в 23:22
поделиться
  1. Почему важно.
  2. Все дело в компромиссах.
  3. Криптография в значительной степени отвлекает от безопасности.
3
ответ дан 22 November 2019 в 23:22
поделиться

Правило №1 безопасности для программистов: Не выкручивайте свои собственные

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

Это не значит, что вам не нужно ничего знать о безопасности. Вам определенно нужно знать достаточно, чтобы понять, что вы делаете, и убедиться, что вы правильно используете инструменты. Однако, если вы когда-нибудь начнете писать свой собственный алгоритм криптографии, систему аутентификации, дезинфицирующее средство ввода и т. Д., Остановитесь, сделайте шаг назад и запомните правило № 1.

102
ответ дан 22 November 2019 в 23:22
поделиться

Безопасность - это процесс, а не продукт.

Многие, похоже, забывают об этом очевидном факте.

41
ответ дан 22 November 2019 в 23:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: