Безопасное хранение конфиденциальных данных на стороне клиента

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

использование SSL для всех бирж

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

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

Вопрос Как это можно улучшить с помощью этого базового метода.

Пожалуйста, я знаю, что будет много, НЕ ДЕЛАЙТЕ ЭТОГО! ответы (если бы я не спрашивал, я был бы одним из них), поэтому, пожалуйста, будьте конкретны, вы проповедуете в хоре об этом, так что будьте конструктивны в негативах.

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

Спасибо.

3 ответа

Решение

использование SSL для всех бирж

Должно быть сделано независимо от того, какое решение вы используете, если речь идет о кредитных картах / платежной информации. Как вы, наверное, знаете.

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

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

Даже если нам не разрешено говорить "не делай этого!" - почему бы вам не спросить нас о хороших способах отговорить вашего менеджера от принятия этого решения?;-)

Что заставляет вас не желать хранить эту серверную часть? Это не значит, что Amazon хранит информацию о моей кредитной карте в cookie. Основная идея заключается в том, чтобы хранить всю пользовательскую информацию на сервере и получать к ней доступ, когда пользователь успешно прошел аутентификацию (т.е. вошел в систему).

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

Хранение фактических номеров кредитных карт в cookie-файлах (зашифрованных или нет) может стать потенциальным кошмаром PR, когда какой-то технически подкованный клиент поймет, что вы делаете.

Тема для дополнительного чтения: Какую информацию можно хранить в файлах cookie?

Изменить: Чем больше я читаю этот вопрос, тем больше я ошеломлен. Ваш менеджер вообще знает, что такое печенье? Как это устроено? Какой в ​​этом смысл? Сказать, что вы хотите хранить информацию о кредитной карте в файлах cookie, все равно, что сказать, что вы хотите использовать обувь как средство для транспортировки шнурков. Он активно и целенаправленно стреляет себе в ногу без всякой причины. То, чего он хочет достичь, может быть достигнуто намного проще с помощью других, гораздо более безопасных методов - без какой-либо потери функциональности.

Из статьи Скотта Хансельмана:

Хранение кредитных карт

Если вам абсолютно необходимо хранить данные кредитной карты, они должны храниться в зашифрованном виде.

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

(мой акцент)

Отметьте, что файлы cookie передаются через каждый запрос. Если вы храните в них информацию о кредитной карте, она не только менее безопасна, но и не приносит никакой реальной выгоды от времени. За исключением того, что его легче реализовать, нет никаких причин делать это таким образом. Поскольку вы тот, кто его внедряет, ему все равно не нужно заботиться о простоте реализации...

Изменить: Вы также можете указать, что если что-то пойдет не так, он будет уволен за это. Угроза его работе - отличный способ заставить его увидеть это по-своему.

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

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

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

Другие вопросы по тегам