Разве это не угроза безопасности? - PullRequest
0 голосов
/ 28 апреля 2020

Я собираюсь осуществить платежи на веб-сайте.

Я видел такие решения, как использование Javascript кода

function onBuyClicked() {
  if (!window.PaymentRequest) {
    // PaymentRequest API is not available. Forwarding to
    // legacy form based experience.
    location.href = '/checkout';
    return;
  }

  // Supported payment methods
  var supportedInstruments = [{
      supportedMethods: ['basic-card'],
      data: {
        supportedNetworks: [
          'visa', 'mastercard', 'amex', 'discover',
          'diners', 'jcb', 'unionpay'
        ]
      }
  }];

  // Checkout details
  var details = {
    displayItems: [{
      label: 'Original donation amount',
      amount: { currency: 'USD', value: '65.00' }
    }, {
      label: 'Friends and family discount',
      amount: { currency: 'USD', value: '-10.00' }
    }],
    total: {
      label: 'Total due',
      amount: { currency: 'USD', value : '55.00' }
    }
  };

  // 1. Create a `PaymentRequest` instance
  var request = new PaymentRequest(supportedInstruments, details);

  // 2. Show the native UI with `.show()`
  request.show()
  // 3. Process the payment
  .then(result => {
    // POST the payment information to the server
    return fetch('/pay', {
      method: 'POST',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(result.toJSON())
    }).then(response => {
      // 4. Display payment results
      if (response.status === 200) {
        // Payment successful
        return result.complete('success');
      } else {
        // Payment failure
        return result.complete('fail');
      }
    }).catch(() => {
      return result.complete('fail');
    });
  });
}

document.querySelector('#start').addEventListener('click', onBuyClicked);

, но этот код в Javascript полностью виден всем, кто просматривает страницу источника.

И еще, предположим, я хочу сохранить успешную покупку на моем сервере. Пост будет виден.

Разве это не угроза безопасности?

Есть ли способ защитить это?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

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

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

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

1 голос
/ 28 апреля 2020

Разве это не угроза безопасности?

Только в том случае, если код на стороне сервера считает, что расходы, представленные клиентом, не проверены.

...