Безпека Checkout
Серверні правила, що захищають інтеграцію Checkout, від роботи з ключами до перевірки платежу перед виконанням замовлення.
Tapaya забезпечує поля картки, токенізацію, автентифікацію картки та стягнення оплати, тому ваші системи ніколи не працюють з необробленими даними картки. За вами залишається сервер, який створює платежі й вирішує, коли замовлення оплачено. Ці правила стосуються як Hosted Checkout, так і вбудованих платежів.
Про те, як Tapaya обробляє дані власників карток і персональні дані, див. Захист даних і конфіденційність.
Зберігайте ключі на сервері
- Зберігайте checkout-ключ мерчанта або Secret key організації лише в серверній конфігурації. Жодному з них не місце в коді браузера, пакетах мобільних застосунків чи системі контролю версій. До браузера потрапляють лише publishable key і client secret платежу.
- Викликайте Checkout API мерчанта зі свого серверного середовища. Не виконуйте ці запити в браузері клієнта.
- Checkout-ключ мерчанта має доступ лише до свого мерчанта. Передавайте власному бекенду мерчанта саме цей ключ, ніколи не Secret key вашої організації.
- Secret key організації має повноваження в межах усієї організації. У режимі платформи надсилайте його разом із
X-Tapaya-Merchant-Tokenу кожному запиті; API перевіряє, що мерчант належить до організації цього ключа. Див. автентифікацію Checkout. - Ключі мерчанта показуються один раз і зберігаються лише у вигляді хешу. Відкликайте ключ, який, на вашу думку, міг бути розкритий, після того як створите йому заміну.
Керуйте замовленням на своєму сервері
- Обчислюйте суму замовлення на своєму сервері та зберігайте замовлення до створення сесії або спроби платежу.
- Беріть суми, валюту та ID замовлень зі збереженого знімка замовлення. Не приймайте замінні значення, надіслані браузером.
- Для вбудованих платежів прив'яжіть свої ендпоінти
prepareіsubmitдо оформлення замовлення з автентифікацією користувача або до підписаного HTTP-only cookie та перевіряйте origin запитів, що змінюють дані.
Перевіряйте платіж перед виконанням замовлення
Переспрямування браузера, відвідування вашого URL успіху, параметри запиту, cookie повернення та повідомлення браузера є навігаційними даними. Жодне з них не доводить оплату.
- Отримайте сесію на своєму сервері та порівняйте її референс замовлення, суму, валюту та статус платежу зі збереженим замовленням.
- Виконуйте замовлення лише тоді, коли ця перевірка підтверджує
paymentStatus: successful. Сама лише відповідь HTTP 200 не доводить оплату. - Записуйте виконання замовлення атомарно, щоб повторні повернення чи перевірки статусу не могли виконати те саме замовлення двічі.
- Якщо сесія все ще має статус
unpaidабо отримати її не вдається, збережіть ID сесії та перевірте знову з обмеженою кількістю повторних спроб. Не створюйте іншу сесію через те, що перший результат невідомий: нова сесія для замовлення замінює стару. Вебхуків поки немає, тому проводьте звірку опитуванням (polling).
Безпечні повторні спроби
- Перед створенням сесії збережіть разом із замовленням унікальний idempotency key. Якщо запит завершився тайм-аутом або його відповідь втрачено, повторіть його з тим самим ключем і незмінним тілом.
- Не генеруйте новий ключ через невизначений результат. Правила повторного відтворення відповідей див. у розділі Ідемпотентність і помилки.
Обмежте origin для переспрямування
- Додавайте до Allowed websites у налаштуваннях Checkout лише origin власних магазинів.
- Використовуйте HTTPS для розгорнутих магазинів. Перевизначення
successUrlіcancelUrlдля окремих сесій усе одно мають відповідати налаштованому origin.
Повідомлення про проблему безпеки
Якщо ви підозрюєте вразливість або інцидент безпеки, зверніться до команди безпеки, як описано в розділі Контакти.
Чогось бракує на цій сторінці?Надішліть запит на функцію. Ми додамо цю сторінку, щоб команда бачила контекст.