Статьи

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

Когда я впервые начал работать на CashStar.com три с половиной года назад, я слышал о PCI раньше, но я действительно не знал, что это значит. Поскольку мы создавали платформу электронной коммерции, которая собиралась принимать кредитные карты через Интернет, я знал, что нам нужно убедиться, что мы полностью совместимы с PCI. Мы были стартапом, у нас не было много денег, и любая ошибка могла убить компанию. Так как я не хотел быть тем, кто совершил ошибку, я потратил много времени на исследование PCI и того, что нужно для того, чтобы убедиться, что ваше веб-приложение защищено.

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

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

Что такое PCI?

Первое, что спрашивают большинство людей: «Что такое PCI?». PCI — сокращение от Совета по стандартам безопасности индустрии платежных карт. PCI состоит из American Express, Discover Financial Services, JCB, MasterCard и Visa и был создан 7 сентября 2006 года.

Основной целью создания PCI SSC было придумать общий набор стандартов безопасности, которые продавцы могли бы использовать, чтобы лучше защитить себя от хакеров. PCI SSC разработал Стандарт безопасности данных индустрии платежных карт (PCI DSS), который состоит из 12 требований и многих дополнительных требований, которым должны следовать продавцы, чтобы принимать дебетовые, кредитные, предоплаченные, банкоматные или POS-карты от члены PCI SSC.

Почему был создан PCI?

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

PCI влияет на меня?

  • Вы принимаете оплату онлайн или по телефону с помощью кредитной / дебетовой карты?
  • Размещена ли информация о кредитной карте на ВАШЕМ сервере?
  • Вы храните информацию о кредитной карте в зашифрованном виде или нет?

Если вы сказали «да» любому из них, то PCI так или иначе влияет на вас.

Требования PCI DSS

Вот список из 12 требований. Когда вы их осмотрите, вы заметите, что большинство из них не так уж сложны, и, возможно, вы уже что-то делаете. Большинство из них просто здравый смысл, но удивительно, как много людей до сих пор ничего не делают, даже если это здравый смысл.

  1. Установите и поддерживайте конфигурацию брандмауэра для защиты данных владельца карты
  2. Не используйте предоставленные поставщиком значения по умолчанию для системных паролей и других параметров безопасности
  3. Защита сохраненных данных держателя карты
  4. Шифрование передачи данных держателя карты через открытые общедоступные сети
  5. Используйте и регулярно обновляйте антивирусное программное обеспечение на всех системах, на которые часто распространяются вредоносные программы.
  6. Разрабатывать и поддерживать безопасные системы и приложения
  7. Ограничьте доступ к данным держателя карты по бизнес-необходимости
  8. Назначьте уникальный идентификатор каждому человеку, имеющему доступ к компьютеру
  9. Ограничить физический доступ к данным держателя карты
  10. Отслеживайте и контролируйте весь доступ к сетевым ресурсам и данным держателей карт
  11. Регулярно тестировать системы безопасности и процессы
  12. Поддерживать политику, касающуюся информационной безопасности

PCI с точки зрения непрофессионала

  • Все продавцы, независимо от того, хранятся ли данные кредитных карт, должны всегда соблюдать и поддерживать соответствие.
  • Торговцы не могут хранить определенную информацию о кредитной карте, включая CVV, данные трека, магнитную полосу или данные PIN-кода.
  • Если вы храните разрешенные данные кредитной карты, вам нужно хранить их безопасным способом, следуя стандартам безопасности PCI.

Как работает сертификация PCI?

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

  • Заполните анкету самооценки (SAQ) и выясните, какой вы уровень
  • Убедитесь, что вы следуете всем рекомендациям для этого уровня
  • Исправить любые проблемы
  • Аттестация соответствия (при самооценке)
  • Внешний аудитор (при необходимости)

С чего начать?

  1. Определите лиц, которые будут нести ответственность за соблюдение PCI в вашей организации, и соберите команду, в которую войдут участники из каждой области.
  2. Определите свой уровень торговца (1-4).
  3. Определите, какой SAQ потребуется вашей организации.
  4. Оцените, будет ли ваша организация добиваться внутреннего соответствия или привлекать квалифицированного оценщика безопасности (QSA).
  5. Обратитесь к утвержденному поставщику сканирования (ASV), чтобы запустить необходимое сканирование внешних уязвимостей IP.
  6. Убедитесь, что в вашей организации есть политика информационной безопасности и что она применяется.
  7. Немедленно устраните любые существенные недостатки, обнаруженные во время оценки или сканирования.
  8. Сохраняйте записи самооценок, проверок и последующих действий. Будьте готовы предоставить эти документы по запросу.

Какой уровень PCI я?

Существует 4 уровня соответствия PCI, и от количества транзакций, которые вы обрабатываете в год, зависит, на каком уровне вы находитесь.

Уровень торговца

Уровень 1. Продавцы, обрабатывающие более 6 миллионов транзакций Visa в год (по всем каналам), или Глобальные продавцы, идентифицированные как Уровень 1 в любом регионе Visa.

Уровень 2 : Торговцы, обрабатывающие от 1 до 6 миллионов транзакций Visa в год (все каналы)

Уровень 3 : Торговцы, обрабатывающие от 20 000 до 1 миллиона транзакций электронной торговли Visa в год

Уровень 4. Продавцы, обрабатывающие менее 20 000 транзакций электронной торговли Visa в год, а все остальные продавцы, обрабатывающие до 1 миллиона транзакций Visa в год.

Требования

Уровень 1 : Требуется оценка безопасности на месте Ежегодно, Сканирование уязвимостей сети требуется ежеквартально

Уровень 2 : Оценка безопасности на месте по усмотрению торговцев, Ежегодно требуется опросник для самооценки, Ежеквартально требуется сканирование уязвимости сети

Уровень 3. Анкета самооценки, необходимая ежегодно, сканирование уязвимостей сети требуется ежеквартально

Уровень 4. Анкета самооценки, необходимая ежегодно, сканирование уязвимостей сети требуется ежеквартально

RoC или SAQ?

Если вы уровень 1, вам нужно заполнить RoC, если вы уровень 2, 3 или 4, тогда вы можете заполнить SAQ. Существуют некоторые исключения из этих правил, например, если в прошлом у вас были нарушения безопасности, компании-эмитенты кредитных карт могут потребовать, чтобы вы завершили RoC, даже если вы не уровень 1.

Отчет о соответствии (RoC)

Если вы обрабатываете более шести миллионов кредитных карт в год (Уровень 1), вам необходимо иметь на месте оценку PCI и Отчет о соответствии (RoC), выпущенный Квалифицированным оценщиком безопасности (QSA). Другим организациям уровня 2 также может потребоваться представить RoC или сделать это в ожидании возможности стать торговцем уровня 1.

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

QSA обычно поощряют своих клиентов PCI использовать решение для управления соответствием PCI в течение года. Это поможет им в поддержании соответствия и должно ускорить и ускорить участие на месте и завершение RoC.

Анкета самооценки

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

SAQ-A : Торговцы, не имеющие карты ( заказы по электронной почте или по почте / телефону), все данные о держателях карт переданы на аутсорсинг. Это никогда не будет применяться к торговцам лицом к лицу.

SAQ-B : продавцы только для выходных данных без хранения данных о держателях электронных карт или автономные продавцы терминалов с исходящим набором без хранения данных о держателях электронных карт

SAQ-C-VT : продавцы, использующие только виртуальные веб-терминалы, не хранят данные о владельцах электронных карт

SAQ-C : продавцы с платежными системами, подключенными к Интернету, без хранения данных о держателях электронных карт

SAQ-D : Все другие продавцы, не включенные в описания для SAQ типов A – C выше, и все поставщики услуг, определенные платежным брендом как имеющие право на завершение SAQ.

Поскольку мы говорим здесь только о веб-приложениях, вы, скорее всего, попадете только в A, C или D. Как только вы узнаете свой уровень, вам нужно будет заполнить SAQ для этой категории. Когда вы закончите, вам также понадобится Аттестация соответствия.

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

SAQ-A

В A есть много разных частей, но большая из них заключается в том, что данные кредитной карты никогда не затрагивают ваши серверы. Самый простой способ сделать это — перенаправить людей на чужие серверы, когда вы хотите, чтобы они вводили данные кредитной карты. Это характерно для Paypal, Google Checkout и Amazon платежей.

Другим способом решения этой проблемы является размещение вашей платежной страницы на шлюзе вашей кредитной карты. Примером этого является простая проверка authorize.net .

Третий способ сделать это — то, что называется «прозрачным перенаправлением» или «прямой почтой», BrainTreePayments был первым, кто сделал это популярным, но с тех пор Authorize.net также добавил его.

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

BrainTree + LivingSocial расскажет об этом новом подходе сквозного шифрования данных кредитных карт .

SAQ-С

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

SAQ-Д

Если вы не попадаете в другие категории, то вы являетесь D. SAQ D иногда называют ROC light, потому что любая организация, которая должна заполнить SAQ D, в основном выполняет все 12 требований PCI DSS, хотя и по сниженным шкала.

Сколько стоит PCI?

Очень трудно получить точное значение для этого, потому что это будет отличаться для всех, но согласно BrainTree, вот диаграмма того, сколько стоит стать PCI-совместимым .

уровень № транс Сфера податливость Тип аудита
1 6М + $ 125K $ 586K местный
2 1M-6M $ 105K $ 267K SAQ
3 20K-1М $ 44K $ 81K SAQ
4 <20K ? ? SAQ

Внешний аудит

уровень Стоимость в год
Low End $ 20K- $ 30K
Средний $ 225K
Топ 10% $ 500K +

Если вы достаточно велики или неудачливы, чтобы требовать внешнего аудита, это не будет дешево. Аудиты длятся несколько недель или более на месте и стоят от 20 до 30 тыс. Долл. США для нижнего уровня. В среднем они составляют около 225 тыс. Долларов в год, а около 10% аудитов обходятся в 500 тыс. Долларов. Как вы можете видеть, это очень дорогая ежегодная стоимость, и ее следует избегать, если это возможно.

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


Вот несколько ссылок, где я получил свои данные.

PCI 2.0

26 октября 2010 года была выпущена версия PCI DSS 2.0. Вот некоторые из основных моментов.

  • 132 изменения, 2 новых, остальные уточнения или дополнительные рекомендации
  • Добавлены дополнительные рекомендации по виртуализации и тому, как она влияет на PCI
  • Веб-сервисы Amazon (AWS) теперь являются центрами данных уровня PCI, совместимыми с уровнем 1.

Нитти Гритти

Теперь, когда вы знаете, что такое PCI, давайте приступим к мелочам. Наиболее распространенные вопросы, которые мне задают, — это самый простой способ получить сертификацию PCI. Вот что я говорю людям.

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

Теперь у вас нет оправданий, пусть процессор кредитных карт обрабатывает все данные кредитных карт, и это облегчит вашу жизнь. Если вы хотите увидеть , как гораздо проще, перейти к стандартам безопасности PCI сайта и загрузить SAQ A и SAQ C документы. Вы заметите, что SAQ A намного проще и намного меньше хлопот.

Как бы ни были Briantree и решения с полосами, они не могут решить все проблемы. Одной из распространенных проблем является прием данных кредитных карт через API, который в наши дни все чаще встречается в мобильных приложениях. Если вы не можете использовать одно из других решений по той или иной причине, вы можете проверить Edge Tokenization от Akamai, он будет работать как для API, так и для веб-форм оплаты. Это довольно дорого, но если вы уже используете некоторые другие решения akamai, это может быть не такой большой проблемой.

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

Распространенные ошибки PCI

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

Хранение информации о кредитной карте в виде простого текста

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

Пароли по умолчанию не изменены

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

Сегодня на рынке есть действительно хорошие инструменты для управления паролями, я рекомендую использовать один из них. Один из моих любимых — 1password .

Удалите все программы, которые не нужны с ваших серверов

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

Используйте брандмауэр

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

Просто запуск брандмауэра — это только его часть, вам нужно знать, как настроен брандмауэр и почему. У вас всегда должен быть документ со списком открытых портов и почему. Это будет очень полезно позже, когда вы пройдете аудит и захотите узнать, какие порты открыты, и причины этого.

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

Вы также можете использовать такой сервис, как CloudFlare, который защищает ваш сайт от целого ряда онлайн-угроз от спамеров до SQL-инъекций и DDOS. Его легко настроить, и изменения в вашем коде должны быть минимальными.

Плохо закодированные сайты

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

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

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

Отсутствие мониторинга и регистрации

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

Вот список инструментов, которые помогут вам с вашей регистрации и мониторинга.

  • Pingdom — это инструмент для мониторинга веб-сайтов, который сообщит вам, когда ваш сайт не работает.
  • Nagios предлагает полный мониторинг и оповещение для серверов, коммутаторов, приложений и сервисов.
  • Cacti — это комплексное решение для построения сетевых графиков, предназначенное для использования возможностей RRDTool по хранению и графическому отображению данных.
  • Sentry Open Source платформа для регистрации и агрегации событий в реальном времени
  • Облачный сервис Loggly Log Management для централизованного поиска и анализа журналов, данных временных рядов.
  • графитовый масштабируемый сервер в реальном времени
  • collectd — это демон, который периодически собирает статистику производительности системы и предоставляет механизмы для хранения значений различными способами, например, в файлах RRD.
  • monit Простой, упреждающий мониторинг Linux / Unix систем, сетевых и облачных сервисов.
  • Munin Munin это сетевой инструмент мониторинга ресурсов , которые могут помочь проанализировать тенденции в ресурсах.
  • New Relic — это единственный инструмент, который вам нужен для определения и решения проблем производительности в ваших приложениях на Ruby, Java, .NET, PHP и Python.
  • Pager Duty Phone и SMS-оповещения и планирование по вызову для Nagios, Zenoss, Munin, Monit и большинства других инструментов мониторинга IT.

Отсутствующие исправления безопасности

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

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

Не использовать SSL для страницы оплаты

Другого ежу понятно, но иногда такое бывает. Вы должны добавить код в свои веб-приложения, которые проверяют, чтобы убедиться, что платежные страницы обслуживаются по SSL, если нет, выполните перенаправление на SSL-версию страницы.

Простой способ сделать это — постоянно обслуживать весь сайт по SSL, а затем выполнить простое перенаправление с веб-сервером с порта 80 (http) на порт 443 (https). Это гарантирует, что весь трафик будет обслуживаться по SSL все время.

Регистрация информации об оплате

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

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

Данные кредитной карты, которые могут быть сохранены

Важно, чтобы вы НИКОГДА не хранили данные кредитной карты в базе данных, даже если она зашифрована. Это не стоит хлопот, рисков и затрат на проведение внешнего аудита. Но если вы абсолютно настаиваете, вот что вам нужно знать.

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

  • В соответствии с 3.3 Mask PAN при отображении (первые шесть и последние четыре цифры являются максимальным количеством отображаемых цифр). Это означает, что вам нужно сделать что-то вроде этого ***** 1234 Visa вместо действительного номера кредитной карты. Это довольно распространено в наши дни.

  • Согласно пункту 3.4: Сделать PAN нечитаемым везде, где она хранится (в том числе на портативных цифровых носителях, носителях резервного копирования и в журналах), используя любой из следующих подходов:

    • Односторонние хеши, основанные на сильной криптографии (хэш должен быть от всей PAN) [Однонаправленные хеш-функции, такие как алгоритм защищенного хеширования (SHA), основанный на сильной криптографии, могут использоваться для того, чтобы сделать данные держателя карты нечитаемыми. Хеш-функции подходят, когда нет необходимости извлекать исходное число (односторонние хеш-коды необратимы). Чтобы усложнить создание радужных таблиц, рекомендуется, но не является обязательным, чтобы в хеш-функцию дополнительно вводилось солт-значение. в Пан.]
    • Усечение (хэширование не может заменить усеченный сегмент PAN)
    • Индексные токены и колодки (колодки должны храниться в безопасном месте)
    • Сильная криптография с соответствующими процессами и процедурами управления ключами
  Хранение разрешено Требуется защита
Данные держателя карты
Номер аккаунта Y Y
Данные держателя карты Y N
Срок годности Y N
Сервисный код Y N
Данные аутентификации
Магнитная полоса N н /
CVV N н /
Данные Pin N н /

лексемизацию

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

Центры данных

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

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

Хостинг в облаке

Amazon Web Services (AWS) недавно заставили свои центры обработки данных соответствовать требованиям PCI, но важно отметить, что только то, что центр обработки данных соответствует требованиям, не означает, что ваше приложение будет. Если вы поместите свое заявление в EC2 и примете данные кредитной карты, которые обрабатываются в этих экземплярах EC2, вам необходимо убедиться, что у вас также есть Система обнаружения вторжений (IDS), в том числе или нет. Соответствует PCI. Все хорошие IDS основаны на оборудовании, и кто-то постоянно следит за трафиком. Вы не можете установить эти системы в AWS, поэтому вам нужно полагаться на программное решение, которое не так хорошо и добавляет еще один уровень сложности вашему сетевому стеку.

RackSpace предлагает гибридную установку облачного хостинга , которая позволяет вам иметь аппаратный брандмауэр, IDS, балансировщики нагрузки, облачные веб-серверы и серверы баз данных оборудования. Но даже в этой настройке он не совместим с PCI, по крайней мере, я не смог заставить RackSpace сказать мне, что это так.

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

Сканеры безопасности

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

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

Системы обнаружения вторжений

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

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

Хеширование номеров кредитных карт

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

То, что вы следуете правилам PCI, не означает, что вы непобедимы, вам все равно придется использовать здравый смысл.

PCI DSS, раздел 3.4 [pdf] : визуализировать PAN, как минимум, нечитаемым везде, где она хранится, используя любой из следующих подходов: Сильные односторонние хеш-функции (хешированные индексы)

Убедитесь, что данные оказываются нечитаемыми, используя один из следующих методов: односторонние хеши (индексы хеширования), такие как SHA-1

По сути, это означает, что вам разрешено хранить первые 6 цифр кредитной карты (BIN), а также последние 4 цифры кредитной карты. Длина кредитных карт составляет от 13 до 16 цифр, а последняя цифра является контрольной цифрой ( алгоритм Луна ).

Давайте посмотрим, как трудно было бы выяснить номер этой кредитной карты. 4012888888881881

Если мы начнем с полных 16 цифр, это означает, что у нас есть ^10 ^ 16 или 10 000 000 000 000 000 (10 квадриллионов) возможных номеров карт, если мы ничего не знали о карте.

Поскольку мы храним тип кредитной карты, мы знаем, что это виза, все визовые кредитные карты начинаются с 4, что означает, что это может быть 4XXXXXXXXXXXXXXX или 4 000 000 000 000 000 (4 квадриллиона) возможных номеров карт, мы просто сократили число возможных карты в более чем половине.

Если мы также сохраним корзину (первые 6 цифр) и последние 4 цифры, то это будет выглядеть так. 401288 ****** 1881 или 1 000 000 (1 миллион) возможных номеров карт.

Начнем с того, что попробуем написать простой взломщик (Ruby)

hashed_card_number = '62163a017b168ad4a229c64ae1bed6ffd5e8fb2d'
masked_card_number = '401288******1881'

Код

require 'digest/sha1'

def reverse_hashed_card_number( hashed_card_number, first_six, last_four)
    0.upto(999_999) do |i|
        card_number_to_test = "#{first_six}%06d#{last_four}" % i
        hashed_to_test = Digest::SHA1.hexdigest(card_number_to_test)
        if hashed_card_number == hashed_card_number_to_test
          return card_number_to_test
        end
    end
end

Давайте запустим это

Benchmark.measure do
  puts reverse_hashed_card_number(
    '62163a017b168ad4a229c64ae1bed6ffd5e8fb2d',
    '401288',
    '1881'
) end.real
4012888888881881
=> 5.33522081375122

За 5,3 секунды он смог взломать хеш, если использовать только хеш SHA-1. Мы могли бы сделать это еще быстрее, если бы мы проверили число luhn перед запуском хэша, и если проверка luhn не удалась, мы знаем, что число недопустимо, и нет необходимости запускать хэш. Поскольку хеш-функция будет работать медленнее, тогда проверка luhn должна ускорить процесс.

Радужные Столы + Соли

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

В идеале, если вы собираетесь хэшировать кредитную карту, не используйте SHA-1 или MD5, используйте одну из более новых версий SHA, SHA-256 или выше, а также соль . Соль — это, по сути, второе уникальное значение, которое вы всегда используете при хешировании, чтобы генерировать другую соль, чем вы обычно получаете только с помощью номера кредитной карты.

Since I won’t have your salt when I generate my rainbow table, my rainbow table will be no good. It adds yet another layer of security. Make sure you don’t lose your SALT or else you will have to start over from scratch. Treat your salt like a password, and keep it safe.

Do I really have to worry about being hacked?

Here is a short list of companies that have been hacked recently. If they can get hacked, so could you.

What could happen if you were Hacked?

  • Banned from accepting credit cards
  • Loss of reputation and customers
  • Fines up to $500,000 per incident
  • Litigation (you could be sued)

What if I was breached?

In the event of a security incident, merchants must take immediate action to:

  1. Contain and limit the exposure. Conduct a thorough investigation of the suspected or confirmed loss or theft of account information within 24 hours of the compromise
  2. Alert all necessary parties. Be sure to notify: * Merchant Account Provider * Visa Fraud Control Group at (650) 432-2978 * Local FBI Office * U.S. Secret Service (if Visa payment data is compromised)
  3. Provide the compromised Visa accounts to Visa Fraud Control Group within 24 hours.
  4. Within four business days of the reported compromise, provide Visa with an incident report.