Безопасно обрабатывайте конфиденциальные данные с помощью Skyflow
26 апреля 2022 г.Любая компания, работающая с конфиденциальными данными, должна сделать безопасность главным приоритетом. Конфиденциальные данные могут включать в себя данные индустрии платежных карт (PCI), такие как информация о кредитной карте, личную информацию (PII), такую как номера социального страхования, защищенную медицинскую информацию (PHI), например историю болезни, и многое другое.
PCI, PII и PHI? Когда дело доходит до безопасности данных, это только начало. Данные должны быть защищены при передаче, использовании и хранении. Вы должны убедиться, что установлены надлежащие средства контроля доступа для аутентификации и авторизации. Вам также необходимо поддерживать конфиденциальность данных, их целостность и доступность. Это может быть еще более сложным, когда вам нужно реплицировать данные между системами.
Если все это звучит пугающе, вам следует подумать об использовании службы хранилища конфиденциальности данных, чтобы удовлетворить ваши потребности в безопасности. Не каждая компания может позволить себе нанять команду экспертов по безопасности и конфиденциальности данных, и это нормально. Что не нормально, так это срезать углы. «Покупайте, а не создавайте» — это мантра, которую вы должны принять, когда имеете дело с критически важными частями вашего приложения, которые являются второстепенными по отношению к основной деятельности вашей компании.
В этой статье я хотел бы показать вам простую демонстрацию безопасного приложения для хранения кредитных карт, которое я создал с помощью Skyflow Data Privacy Vault. Мы рассмотрим некоторые преимущества аутсорсинга ваших потребностей в конфиденциальности данных, чтобы вы могли сосредоточиться на основных продуктах своей компании, сохраняя при этом безопасность и соответствие требованиям.
Давайте начнем!
Демонстрационное приложение: страница оформления заказа
Представьте, что вы — компания электронной коммерции, и пользователь совершает покупку в вашем интернет-магазине. Они приходят на вашу страницу оформления заказа и должны ввести данные своей кредитной карты. Вы хотите быть уверены, что обрабатываете информацию об их кредитных картах безопасно, а также хотите хранить информацию об их кредитных картах, чтобы она была сохранена для них в следующий раз, когда они будут использовать ваш сайт.
Здесь следует учитывать несколько важных соображений:
Помните, что данные должны быть защищены при передаче, использовании и хранении. Это означает отправку информации о кредитной карте по сети с использованием SSL/TLS (HTTPS, а не HTTP) и шифрование данных в вашей базе данных, а не сохранение их в виде обычного текста.
Вам также необходимо обеспечить надлежащий контроль доступа, а это означает, что после сохранения данных только нужные люди смогут получить к ним доступ.
Когда дело доходит до целостности и доступности, вам необходимо убедиться, что данные хранятся правильно и не изменяются непреднамеренно, а данные должны быть доступны, когда кому-то нужно их получить.
Это лишь некоторые из требований, которым необходимо соответствовать, чтобы стать совместимым с PCI.
Быстрое отслеживание демо-приложения с SDK Skyflow
При создании страницы оформления заказа я использовал [Skyflow JavaScript SDK] (https://github.com/skyflowapi/skyflow-js), чтобы предоставить элементы поля формы в пользовательском интерфейсе. Эти элементы реализованы внутри фреймов, которые отделяют их от остальной части моего внешнего приложения, и это снижает мой риск. Когда пользователь вводит информацию о своей кредитной карте и отправляет форму, внешний интерфейс Skyflow API отправляет запрос на отправку данных в мое [Хранилище конфиденциальности данных Skyflow] (https://docs.skyflow.com/create-a-vault/) .
Сервер отвечает уникальным идентификатором и токенизированными данными, представляющими сохраненную информацию о кредитной карте. Это означает, что помимо того, что данные кредитной карты не касаются внешнего интерфейса моего приложения, данные кредитной карты также вообще не затрагивают серверную часть моего приложения, что еще больше снижает мой риск. Затем токенизированные данные могут быть сохранены в моей собственной базе данных. Это означает, что я вообще не храню информацию о кредитной карте напрямую, а только токенизированную ссылку на нее.
Давайте углубимся в код, чтобы увидеть, как я это построил. Весь код [доступен на GitHub] (https://github.com/thawkin3/skyflow-demo), если вы хотите следовать ему.
Создание формы кредитной карты
Мое приложение построено с использованием бэкэнда Node.js и Express и ванильного интерфейса JavaScript. Так что никаких интерфейсных фреймворков — только простой HTML, CSS и JS.
Создание формы кредитной карты относительно просто и состоит всего из нескольких шагов. Функции высокого уровня и их порядок выглядят следующим образом:
```javascript
константа инициализации = () => {
const skyflowClient = initializeSkyflowClient();
const collectContainer = createCollectContainer (skyflowClient);
const [cardHolderNameElement, cardNumberElement, expiryDateElement] =
createCollectElements (collectContainer, collectStylesOptions);
mountCollectElements(
элементcardHolderName,
элемент карты,
expiryDateElement
addFormSubmissionEventListener (collectContainer);
в этом();
Давайте пройдемся по этим шагам один за другим.
Во-первых, я инициализирую свой клиент Skyflow, используя свой идентификатор хранилища, URL-адрес хранилища и вспомогательную функцию, чтобы получить токен носителя, используемый для аутентификации:
```javascript
const skyflowClient = Skyflow.init({
vaultID: 'cce8a3de0d2548fa9551f0f47f4c09b3',
vaultURL: «https://ebfc9bee4242.vault.skyflowapis.com»,
получитьBearerToken,
Идентификатор хранилища и URL-адрес хранилища можно получить в вашей учетной записи Skyflow. Я следовал Краткому руководству по Core API, чтобы создать свое первое хранилище. Для краткости и во избежание повторения я предлагаю вам ознакомиться с шагами в руководстве для этой части.
Во-вторых, я создаю контейнер, в котором будут храниться поля формы:
```javascript
const createCollectContainer = (skyflowClient) =>
skyflowClient.container(Skyflow.ContainerType.COLLECT);
Контейнер ничего не делает сам по себе, пока мы не создадим внутри него элементы, так что мы сделаем это сейчас.
В-третьих, я создаю поля формы для сбора информации о кредитной карте пользователя. Это включает имя владельца карты, номер кредитной карты и дату истечения срока действия кредитной карты:
```javascript
const createCollectElements = (collectContainer, collectStylesOptions) => {
const cardHolderNameElement = collectContainer.create({
таблица: 'credit_cards',
столбец: 'cardholder_name',
...собратьStylesOptions,
этикетка: «Имя держателя карты»,
заполнитель: «Джон Доу»,
тип: Skyflow.ElementType.CARDHOLDER_NAME,
const cardNumberElement = collectContainer.create({
таблица: 'credit_cards',
столбец: 'номер_карты',
...собратьStylesOptions,
заполнитель: «4111 1111 1111 1111»,
этикетка: «Номер карты»,
тип: Skyflow.ElementType.CARD_NUMBER,
const expiryDateElement = collectContainer.create({
таблица: 'credit_cards',
столбец: 'expiry_date',
...собратьStylesOptions,
метка: «Срок годности (ММ/ГГ)»,
заполнитель: '24.01',
тип: Skyflow.ElementType.EXPIRATION_DATE,
return [cardHolderNameElement, cardNumberElement, expiryDateElement];
В-четвертых, я монтирую элементы поля формы в DOM. Это то, что вставляет фреймы в контейнеры-заполнители, чтобы поля формы действительно отображались в пользовательском интерфейсе:
```javascript
константа mountCollectElements = (
элементcardHolderName,
элемент карты,
expiryDateElement
cardHolderNameElement.mount('#collectCardholderName');
cardNumberElement.mount('#collectCardNumber');
expiryDateElement.mount('#collectExpiryDate');
В-пятых, и наконец, я добавляю прослушиватель событий к моей кнопке Отправить. Теперь, когда форма отправлена, делается запрос API для безопасного хранения информации о кредитной карте пользователя в моем хранилище Skyflow:
```javascript
const addFormSubmissionEventListener = (collectContainer) => {
const submitCreditCardForm = (e) => {
e.preventDefault();
const resultContainer = document.querySelector('#result');
const collectResponse = collectContainer.collect();
собиратьответ
.тог((данные) => {
resultContainer.textContent = Успех! Сохраненные токенизированные данные с идентификатором: ${data.records[0].fields.skyflow_id}
;
resultContainer.classList.remove('скрытый');
.поймать (() => {
Контейнер результата.textContent =
'Ошибка. Не удалось сохранить информацию о кредитной карте.';
resultContainer.classList.remove('скрытый');
const CreditCardForm = document.querySelector('#creditCardForm');
CreditCardForm.addEventListener («отправить», отправитьCreditCardForm);
Вот об этом! Эти шаги выделяют основные фрагменты кода, необходимые для работы с SDK Skyflow JavaScript. Если вам нужно полное рабочее решение, обратитесь к [репозиторию на GitHub] (https://github.com/thawkin3/skyflow-demo), уделив особое внимание файлам index.html и script.js. в общем
каталоге.
Демонстрация страницы оформления заказа в действии
Теперь, когда у нас есть общее представление о том, как создается страница оформления заказа, давайте посмотрим на нее в действии! Пользователь вводит данные своей кредитной карты:
Затем пользователь нажимает кнопку Отправить, которая запускает запрос API для сохранения данных кредитной карты и возвращает идентификатор Skyflow:
Мы показываем идентификатор Skyflow здесь, чтобы его было легко увидеть в демонстрации, но вы должны отметить, что это не обязательно то, что вы хотели бы или должны показывать своим пользователям в пользовательском интерфейсе.
Если мы посмотрим на данные ответа, мы увидим, что каждая из наших частей конфиденциальных данных токенизирована или заменена значением токена:
Если мы посмотрим в наше хранилище Skyflow, данные будут выглядеть так. Обратите внимание, что по умолчанию он отредактирован и замаскирован для защиты конфиденциальных данных от приложений, имеющих доступ к хранилищу:
Пользователи с правами администратора, такие как мы, также могут выбрать просмотр данных в виде обычного текста, если это необходимо:
В качестве последнего шага мы можем сохранить идентификатор Skyflow для этой записи в нашей собственной базе данных. В будущем мы можем использовать этот идентификатор для запроса токенизированных данных и их детокенизации.
Вывод
Сегодня мы многое рассмотрели! В дополнение к уроку «Конфиденциальность и безопасность данных 101» мы также рассмотрели Skyflow как одно из возможных решений, которое может помочь нам с нашими потребностями в конфиденциальности данных. Skyflow поставляется со всем, что вам нужно, включая элементы управления доступом, шифрование и токенизацию. Его решения соответствуют SOC2, HIPAA и PCI и даже поддерживают [резидентность данных] (https://www.skyflow.com/solutions/solutions-data-residency), что является общим требованием, включенным в большинство законов о конфиденциальности данных. . И, сохраняя данные PCI в хранилище, а не непосредственно в платежном процессоре, таком как Stripe или Braintree, вы можете [избежать привязки к поставщику] (https://www.skyflow.com/post/build-for-frictionless-growth). -by-voiding-pci-data-lock-in) и даже работать с несколькими платежными системами, чтобы помочь вам лучше адаптироваться к различным рынкам.
Помните, что вам не нужно быть экспертом по конфиденциальности данных, чтобы внедрять лучшие практики. Стартапы, небольшие команды и даже компании среднего и корпоративного уровня могут извлечь выгоду из потребностей в аутсорсинге, которые не связаны с основными функциями их продукта. Перекладывание такой работы на экспертов в предметной области позволяет вам сосредоточиться на основных аспектах вашего бизнеса.
Оригинал