Предотвращение подделки на стороне клиента при использовании Google Pay JavaScript API - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь интегрировать Google Pay в наш интернет-магазин с помощью Google Pay API , и в учебном пособии есть этот фрагмент, который устанавливает сумму для выплаты, и код валюты в объекте JavaScript, напримерэто:

paymentDataRequest.transactionInfo = {
  totalPriceStatus: 'FINAL',
  totalPrice: '123.45',
  currencyCode: 'USD'
};

Это выглядит крайне небезопасно, поскольку любой может изменить значения на стороне клиента, прежде чем в конечном итоге нажать кнопку «Купить с помощью Google Pay».

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

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

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

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

0 голосов
/ 15 марта 2019

Я также могу проверить, что значения в конечном итоге отправляются обратно из платежного шлюза

Это единственный подход, который будет работать.

Я бы также хотел предотвратить это как можно раньше, если это возможно.

Это невозможно. Клиент принадлежит посетителю и, в конечном счете, полностью находится под его контролем.

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

...