Лучшие практики хранения банковской информации в базе данных

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

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

1) Изначально веб-сайт будет находиться на сервере общего хостинга (это моя первая проблема).
2) Я использую PHP / MySQL.
3) Я планирую использовать mcrypt.
4) Ключ будет расположен за пределами корневого веб-сайта.

Пожалуйста, поделись своими мыслями. Если возможно, предоставьте мне ресурсы по обработке ACH.

Спасибо!

РЕДАКТИРОВАТЬ: я ожидал такого ответа, так как я тоже боюсь проблем с безопасностью. Я выразил свою озабоченность моему клиенту, и это будет хорошей поддержкой.

РЕДАКТИРОВАТЬ 2: уйдет от этого. Не был доволен идеей в первую очередь! Изучит API массовых платежей PayPal.


person pistolshrimp    schedule 27.02.2009    source источник
comment
Честно говоря, есть некоторые вещи, от которых стоит просто уйти, и это одна из них. Я не знаю, как можно обеспечить достаточную безопасность на общем веб-хосте для хранения личной банковской информации.   -  person Noah Goodrich    schedule 28.02.2009
comment
Есть также большая проблема с ответственностью. Если данные скомпрометированы, и вы были тем, кто построил систему, есть шанс, что они могут вернуться к вам. Я бы поговорил об этом с юристом.   -  person Paulo    schedule 28.02.2009
comment
Я вижу ... заголовок в будущем ... утерян что-то о тысячах потребителей банковской информации ...   -  person Jason Punyon    schedule 28.02.2009
comment
это та работа, от которой я бы отказался. Слишком большая ответственность. Даже если вы обойдетесь без судебного преследования, у вас все равно будет клеймо написания компромиссной системы.   -  person kemiller2002    schedule 28.02.2009
comment
Какой банк? Какой хостинг? ;)   -  person awithrow    schedule 28.02.2009
comment
Чувак, я бы даже не подумал о размещении такой конфиденциальной информации на общем сервере. Ни в коем случае, ни как.   -  person John McCollum    schedule 28.02.2009


Ответы (9)


Я думаю, вы можете решить эту проблему, не сохраняя банковскую информацию самостоятельно, используя что-то вроде API массовых платежей Paypal. Таким образом, ваш клиент может платить людям, а PayPal хранит всю информацию, поэтому вам не нужно это делать.

Если вы хотите узнать обо всех шагах, которые необходимо предпринять, чтобы иметь хотя бы отдаленную возможность защиты конфиденциальных финансовых данных вашего клиента, Google 'Соответствие PCI '

Если вы до смерти не боитесь хранить финансовые данные в Интернете, вы ужасно наивны.

person Cameron Pope    schedule 27.02.2009
comment
О, как бы мне хотелось проголосовать за это несколько раз: «Если вы до смерти не боитесь хранить финансовые данные в Интернете, вы ужасно наивны». - person Noah Goodrich; 28.02.2009
comment
Честно говоря, он не был наивен. Он задавал это по тону вопроса, который определенно звучал так, будто ему это не очень нравилось. - person Tim; 28.02.2009
comment
Согласен с Тимом. Похоже, ОП знал, что это плохая идея, такой рискованный поступок. - person Ross; 28.02.2009
comment
Да, похоже, ОП искал веские аргументы против этого. И это был хороший ответ. - person lpfavreau; 28.02.2009
comment
Поскольку ОП боится хранить финансовую информацию в Интернете, я бы сказал, что он не ужасно наивен, по крайней мере, в этом случае. :) Я не хотел называть ОП имена, скорее, чтобы помочь ему, но правда моего заявления остается в силе. :) - person Cameron Pope; 28.02.2009
comment
Ребята, я нисколько не обиделась! Я искренне ожидал такого шквала ответов. Я знал общий ответ с самого начала. Самое замечательное - получить крупицы ценной информации из ответов. - person pistolshrimp; 28.02.2009
comment
Я знаю, что это старая тема, но разве PCI DSS не означает Стандарт безопасности данных индустрии платежных карт? Какое отношение PCI имеет к информации о банковском счете? Я все еще согласен со всем остальным, но чувствовал, что это нужно сказать ради первой страницы результатов поиска Google! - person eduardev; 31.10.2014
comment
Я согласен с @Edu - PCI относится к хранению информации о карте, а не данных о банковском счете. - person opyate; 26.08.2016

1) Изначально веб-сайт будет находиться на сервере виртуального хостинга (это моя первая проблема). --ДЕЙСТВИТЕЛЬНО ПЛОХО. Отсутствие абсолютного административного контроля над сервером и возможность не пускать других людей - действительно большая проблема.

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

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

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

person kemiller2002    schedule 27.02.2009
comment
АМИНЬ!! и так что у меня есть десять знаков: АМИНЬ СНОВА !! - person Noah Goodrich; 28.02.2009
comment
Итак, как же хранить банковские реквизиты пользователей? Я бы сказал, что это довольно распространенное требование в современном мире. Сказать оператору, что он должен быть специалистом по сверхбезопасности, не очень помогает. Большинство людей определенно нет. Так как же ваш стандартный разработчик будет хранить такие детали? - person Zapnologica; 20.04.2015
comment
@Zapnologica, ваше правильное направление было бы полезно. Но Кевин в курсе. Если вы задаете эти вопросы, вы не добьетесь результата, который принесет пользу заказчику, пользователю и разработчику. Вам следует спросить КТО, можем ли мы проконсультироваться по этой реализации с проверяемым опытом, или КАК мы можем работать с нашим обработчиком платежей / ACH, чтобы решить эту проблему таким образом, чтобы безопасно и надежно хранить данные. Давайте просто вспомним, что Home Depot, Target и многие другие были сожжены ... на сумму миллионов за то, что недостаточно защищали этот тип данных. - person Laki Politis; 09.02.2017

Не делай этого.

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

А если серьезно, по возможности найдите способ избежать этого.

person Andrew Barnett    schedule 27.02.2009

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

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

person lc.    schedule 27.02.2009

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

Кроме того, mcrypt не очень безопасен. Я знаю, что он встроен, но я бы предложил что-то, что не так легко взломать, например RSA. Если кто-то получит информацию, он не сможет взломать ее без закрытого ключа.

person Paulo    schedule 27.02.2009

Я согласен с остальными - это очень плохая идея.

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

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

Также скажите мне название сайта, чтобы я никогда не регистрировался и не размещал на нем свои банковские данные !!! :)

Кроме того, убедитесь, что у вас есть страховка от ошибок и пропусков, прежде чем переходить к виртуальному хостингу.

person Sam Schutte    schedule 27.02.2009

Я столкнулся с подобной ситуацией, как и вы, и решил ее таким образом.

  1. Поскольку вы не будете выполнять обработку ACH, выясните, может ли API обработки ACH создавать клиента.
  2. Если да, этот объект клиента обычно будет включать номер учетной записи, номер маршрута и т. Д. И хранить токен в вашей базе данных. (Поэтому, когда пользователь предоставляет свою информацию, вы передаете ее прямо в процессор ACH по HTTPS и сохраняете токен).
  3. Всякий раз, когда вам нужно дебетовать их счет, передайте этот токен процессору, и все!

Таким образом, вы не сохраняете какие-либо учетные записи и номера маршрутизации в своей базе данных, и даже если кто-то взломает БД, они просто увидят токены, что довольно бесполезно - они ничего не могут с ним сделать, поскольку это зависит от процессора ACH.

Я сделал то же самое для кредитных карт с помощью Stripe.

Удачи!

person nithinreddy    schedule 25.08.2015
comment
Но хакер может использовать Stripe API для запроса данных учетной записи с токенами, или я ошибаюсь? - person riv333; 29.10.2020

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

person Adam Jaskiewicz    schedule 27.02.2009

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

Данные должны быть где-то зашифрованы!

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

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

В конце: если вы действительно думаете о том, чтобы сделать это на сервере, который может быть небезопасен на 110%, ПРОЙДИТЕ.

person gha.st    schedule 27.02.2009