Почему пароли в виде простого текста - это плохо и как мне убедить своего начальника, что его любимые веб-сайты находятся под угрозой?

У меня всегда сложилось впечатление, что хранение паролей в базе данных в виде простого текста (как кто-то здесь выразился) - очень плохая вещь ™.

Исторически сложилось так, что большая часть наших потребностей в кодировании на стороне сервера выполнялась группой программистов. Они хранят пароли в базах данных MySQL в виде обычного текста.

Как резидентная обезьяна кода (кстати, первая обезьяна, разбирающаяся в серверной части, которая работает здесь, так что я, так сказать, наследую землю) у меня в животе такое чувство, что на кону будет моя задница когда эксплуатируется эта бессмыслица в виде простого текста.

Я пытался объяснить своему боссу, насколько плохи пароли в виде обычного текста, но меня осенило: я не думаю, что когда-либо действительно знал, почему они такие плохие. Есть ли что-то большее, чем вручение вашим хакерам списка паролей на серебряном блюде? Для меня это звучит достаточно плохо, но в нашей стране, где наши веб-сайты «безопасны» и недоступны для хакеров, этот аргумент, похоже, не решает. Как я могу убедить (или напугать) моего начальника, чтобы тот потребовал хеширования на его любимых сайтах?

Связано: Шифрование / хеширование паролей в виде обычного текста в базе данных


person Zoe    schedule 29.07.2009    source источник
comment
Тот же самый вопрос был задан кем-то другим менее 12 часов назад. Это домашнее задание?   -  person Mitch Wheat    schedule 29.07.2009
comment
Нет, не домашнее задание (если бы это была только теория!). К сожалению, я немного далек от решения этой проблемы по соответствующей ссылке, но я надеюсь, что это время придет, скорее, раньше, чем слишком поздно!   -  person Zoe    schedule 29.07.2009
comment
Давай, расскажи нам, что это за URL. ‹Br/› Тогда мы взломаем его для тебя :)   -  person Benjol    schedule 29.09.2009
comment
Это уже немного поздно, но я надеюсь, что это может помочь сообществу: pogsdotnet.blogspot.sg/2017/06/   -  person Allan Chua    schedule 04.06.2017


Ответы (9)


В армии это называется «Глубокая защита». Теория заключается в том, что вы укрепляете каждый слой, который можете, а не только один слой, надеясь, что этого достаточно.

Я слышал такие базы данных, как ваша, которые называются «твердыми снаружи, мягкими и жевательными внутри». Есть миллион способов, которыми преданный хакер может получить доступ к вашей базе данных. Социальная инженерия, недовольный сотрудник, бывший сотрудник, который решает проверить, работает ли его логин, или тот бэкдор, который он написал, все еще там, один пропущенный патч ОС ... список можно продолжить.

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

Я уже нарисовал достаточно ужасную картину?

person Jason    schedule 29.07.2009
comment
Красиво жутко! Это великий босс говорит; ничего технического (глаза босса тускнеют при упоминании о sql-инъекции), и действительно попадает в цель. - person Zoe; 29.07.2009
comment
Напоминает мне рекламу: что твердое снаружи, мягкое и жевательное внутри? Броненосцы! - person Colin Mackay; 29.07.2009
comment
@ Колин Маккей: Там, откуда я родом, у броненосцев нет внутренней части. Они просто плоские. Обычно по ним проходят следы протектора шин. - person Michael Myers; 30.07.2009

Скажите ему, чтобы он подумал, что во многих компаниях проблемы с безопасностью возникают изнутри, а не извне.

Теперь спросите его, как он собирается объяснять своим клиентам, как хакеры украли их пароли (которые, без сомнения, они использовали где-то еще) в следующий раз, когда ему по какой-то причине придется кого-то уволить.

Также спросите его, насколько, по его мнению, его клиенты хотели бы знать, чтобы их пароли были видны всем, у кого есть доступ для чтения к базе данных.

person Jon Skeet    schedule 29.07.2009
comment
Отлично. Забудьте об уязвимостях межсайтового сценария и т.д. - person Robert Cartaino; 29.07.2009
comment
Разве это не похоже на угрозу? Вы бы не хотели, чтобы с вашими клиентами случилось что-то плохое, когда вы меня уволите ... - person jrockway; 29.07.2009
comment
Вы бы не хотели, чтобы с вашими клиентами случилось что-то плохое, когда вы меня уволите ... звучит как что-то, из-за чего вас немедленно вывели бы из помещения! - person Zoe; 29.07.2009
comment
Да, вы действительно хотите прояснить, что вы не были лично угрозой, конечно ... - person Jon Skeet; 29.07.2009
comment
Голосом Гомера Симпсона: Или я? - person Colin Mackay; 29.07.2009

Вот несколько причин:

  • Кто-то может взломать ваш сайт. Это может быть маловероятно, и это, вероятно, не повлияет на вашего босса (сейчас я слышу разговор: «Вы говорите, что сайт небезопасен?»). Но это случается, и помните, никто никогда не думает, что их сайт честно будет взломан на ...
  • Случайный просмотр базы данных инсайдерами (такими, как вы): возможно, вы не ПЫТАЕТЕСЬ смотреть чьи-либо пароли, но в ходе обычной работы вам может потребоваться просмотреть таблицу, содержащую пароли. Учитывая, что многие люди используют один и тот же пароль абсолютно для всего (включая, возможно, вашего начальника!), Вы бы не хотели, чтобы все эти пароли были раскрыты. Спросите своего начальника, использовал ли он когда-нибудь пароль на двух разных сайтах.
  • Если кто-нибудь когда-нибудь узнает, что ваше приложение не шифрует пароли, он может серьезно усомниться в доверии к вашему приложению.
  • Хеширование пароля (желательно с добавлением соли) в базу данных практически ничего не стоит, так почему бы и нет?
person Adam Batkin    schedule 29.07.2009

Вы можете указать, что отсутствие надлежащей защиты учетных записей может подвергнуть компанию юридической ответственности, если информация когда-либо будет скомпрометирована. Игнорирование известной уязвимости может стоить вам судебных издержек, если данные пользователя были раскрыты в результате действий вашей компании (или бездействия, в зависимости от обстоятельств).

В Соединенных Штатах есть определенные типы данных, такие как финансовая и медицинская информация, которые компании по закону обязаны хранить в безопасности и конфиденциальности. Невыполнение этого требования может иметь серьезные последствия. Я не знаком с законами других стран в этом отношении, но это стоит изучить, если ваша компания имеет дело с такими данными.

person Jeromy Irvine    schedule 29.07.2009
comment
Хорошая мысль, я посмотрю, какие похожие законы есть у нас в Австралии. Спасибо! - person Zoe; 30.07.2009

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

  • база данных поддерживается внешней компанией
  • операционная система, на которой работает программное обеспечение db, имеет какие-либо риски безопасности
  • недостатки безопасности в любом другом аппаратном или программном брандмауэре
  • любые пользователи, имеющие доступ к базе данных, каким-то образом получают вирус, который может использовать данные
  • БД находится на украденном компьютере или ноутбуке
  • недовольный сотрудник уволен и решает «вернуться»

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

person Mark Synowiec    schedule 29.07.2009

Если «вручить вашим взломщикам список паролей на блюдечке с голубой каемочкой» - не достаточно веская причина, то что можно считать достаточно веской?

person William Pursell    schedule 29.07.2009

Слишком много случаев кражи баз данных с паролями в виде простого текста: Если это может случиться с Reddit, может случиться и с вами.

person Sinan Ünür    schedule 29.07.2009

Открытые пароли не разрешены, если ваша организация поддерживает соответствие PCI-DSS (например, продавец, который принимает кредитные карты). См. Пункт 8.4 стандарта PCI DSS.

Открытые пароли не разрешены, если ваша организация является финансовым учреждением, застрахованным FDIC (см. FDIC FIL 69 2001).

Пароли должны быть зашифрованы как при передаче, так и при хранении, если вы хотите получить сертификат ISO / IEC 27001, например. если вы работаете с определенными государственными органами.

person John Wu    schedule 03.03.2015
comment
FWIW, encrypted! = Hashed: шифрование обратимо; хеширования нет. Шифрование лучше всего подходит для транспорта; хеширование лучше всего подходит для хранения. - person Solomon Ucko; 22.04.2019

Я видел два хороших ответа на этот вопрос:

  1. Вы защищаете пароли от слежки за сотрудниками, то есть люди, имеющие законный доступ к базе данных, не смогут легко украсть пароль, если они захотят,

  2. Недостаток логики приложения, такой как SQL-инъекция во внешнем интерфейсе веб-сайта, будет иметь меньше шансов привести к компрометации.

На мой взгляд, неплохо было бы зашифровать пароль базы данных (хотя мне еще не удалось это сделать для большинства моих приложений), но гораздо важнее убедиться, что ваш сервер базы данных максимально надежен в отношении сеть и авторизованный доступ. Если злоумышленник сможет проникнуть в вашу базу данных, то не имеет значения, как вы храните свои пароли, он сможет их взломать.

person sipsorcery    schedule 29.07.2009
comment
Если злоумышленник сможет проникнуть в вашу базу данных, то не имеет значения, как вы храните свои пароли, он сможет их взломать. Это может быть логика программиста. Они настолько верят в свою способность защитить сервер, что они думают, что могут сэкономить несколько часов и строк кода, какое это будет иметь значение в конечном итоге? - person Zoe; 29.07.2009
comment
Нисколько. Следует принять обе меры: защитить сервер И зашифровать пароли. Моя точка зрения заключалась в том, что из двух мер защита сервера является наиболее важной. - person sipsorcery; 29.07.2009
comment
Дело не в том, чтобы зашифровать пароли, а в том, чтобы (необратимо) хешировать их. - person Solomon Ucko; 22.04.2019