Все ошибки, вошедшие в список, можно условно разделить на три категории по тому человеческому качеству, на котором они паразитируют: "Доверчивость" (например, к этой категории относится ошибка CWE-601: URL Redirection to Untrusted Site ("Open Redirect")), "Неаккуратность" (CWE-120: Buffer Copy without Checking Size of Input - классика жанра) и "Ложное ощущение защищенности" (CWE-327: Use of a Broken or Risky Cryptographic Algorithm). Я не буду их подробно рассматривать - в самом документе все очень хорошо разложено по полочкам, присутствуют подобающие метафоры и даже легкий юмор. Есть другой вопрос по теме блога: а можно ли научить будущих программистов не допускать промахов, которые впоследствии во время их трудовой деятельности могут вылиться в крупные неприятности?
Рассмотрим некоторые методы обучения:
- "Ребята, бывают вот такие ошибки, их допускать не надо"! Конструктивно? - Ни разу!
- "Ребята, представим себе, что это - настоящий сайт с ценной информацией. А вот так он ломается". Альтернативно: "Попробуйте его сломать". Чуть более захватывающе, но как только появляется слово "представим себе" - эффективность улетучивается. Дело опять в пресловутой разнице между теорией, учебной и реальной практикой. Я много раз говорил, что негативная роль этой разницы не так однозначна, чтобы с ней тотально бороться, но вот здесь тот случай, когда определенные вещи и отдельные характеристики modus operandi можно и нужно вбить в головы. Вымышленное злодейство на вымышленном сайте для этого не годится.
- "Ребята, вот сайт IBM (Microsoft, Google, Рамблер, Yandex, Gametrailers - добавить по вкусу). А вот так он ломается"! Еще более захватывающе и более продуктивно, но... грозит.
Идея здесь проста:
- если вам просто что-то рассказывают, вы быстро это забудете и вспомните только тогда, когда "грянет гром", возможно, уже будучи ответственным за ценную информацию;
- если при обучении вам что-то показывают, но вы сознаете искусственность ситуации в некоторых ее деталях ("представим себе, что это сайт с ценной информацией"), то это ощущение искусственности, скорее всего, расползется на всю проблемную ситуацию ("в реальной жизни такого не бывает");
- если даже ваш настоящий, ценный сайт ломает преподаватель, то это не дает должного эффекта, потому что а) скорее всего, он будет ломать "аккуратно" и б) предполагается (как минимум de jure), что преподаватель должен быть большим умельцем, чем вы;
- если ваш выстраданный сайт о маргаритках, за который вы грезили получить "отлично", накануне перед сдачей забил нецензурной бранью некий Сеня Батарейкин из параллельной группы (о существовании которого вы вообще лишь смутно догадывались), предварительно выпив пива... этого вы не забудете никогда!
Комментариев нет:
Отправить комментарий