Шифрование данных

Вот простая трехэтапная реализация ES6 с использованием привязки функций в родительском конструкторе. Это первый способ, рекомендуемый официальным учебным пособием (существует также синтаксис полей открытых классов, который здесь не рассматривается). Вы можете найти всю эту информацию здесь https://reactjs.org/docs/handling-events.html

Связывание родительских функций, чтобы дети могли звонить им (и передавать данные вверх для родителя!: D)

  1. Убедитесь, что в родительском конструкторе вы связываете функцию, созданную вами в родительском
  2. . Передайте связанную функцию вниз ребенку в качестве опоры (Нет lambda, потому что мы передаем функцию ref)
  3. Вызов связанной функции из дочернего события (Lambda! Мы вызываем функцию при запуске события. Если мы этого не сделаем, функция будет автоматически запускаться при загрузке и не запускаться в событии.)

Родительская функция

handleFilterApply(filterVals){} 

Родительский конструктор

this.handleFilterApply = this.handleFilterApply.bind(this);

Prop Passed to Child

onApplyClick = {this.handleFilterApply}

Ребенок [Call]

onClick = {() => {props.onApplyClick(filterVals)}

10
задан Lasse Vågsæther Karlsen 27 September 2011 в 07:08
поделиться

8 ответов

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

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

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

4
ответ дан 3 December 2019 в 18:02
поделиться

Если Вы не платежный процессор, Вы не должны действительно хранить вид информации о CC.

Рассмотрите свои требования, действительно нет многих случаев, где необходимо хранить информацию CC

5
ответ дан 3 December 2019 в 18:02
поделиться

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

Когда необходимо действовать на номер кредитной карты?

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

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

3
ответ дан 3 December 2019 в 18:02
поделиться

При использовании Oracle, Вы могли бы интересоваться Прозрачным Шифрованием данных. Только доступный с Корпоративной лицензией все же.

Oracle также имеет утилиты для шифрования - дешифрование, например, DBMS_OBFUSCATION_TOOLKIT.

Что касается "Стандартов", надлежащий стандарт, которым Вы интересуетесь, является стандартом DSS PCI, который описывает, какие меры должны быть приняты для защиты чувствительных данных кредитной карт.

1
ответ дан 3 December 2019 в 18:02
поделиться

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

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

1
ответ дан 3 December 2019 в 18:02
поделиться

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

Большинство компаний называет это чем-то как "Клиентское управление Профилем" и на самом деле довольно разумно на сборах.

Несколько поставщиков я знаю о (без определенного порядка):

8
ответ дан 3 December 2019 в 18:02
поделиться

Было бы полезно знать сервер БД и язык/типы платформы, таким образом, мы могли стать более конкретными, но я буду изучать SHA.

0
ответ дан 3 December 2019 в 18:02
поделиться

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

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

0
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: