Можете ли вы безопасно аутентифицировать запрос через IP? - PullRequest
4 голосов
/ 22 ноября 2011

В настоящее время я интегрирую платежный шлюз NAB Transact в интернет-магазин. После обработки платежа система NAB Transact отправляет запрос POST в нашу конечную точку, чтобы мы могли обработать результат.

Проблема заключается в том, что запрос POST не содержит безопасного хэша / токена, который мы можем использовать для отправки обратно в систему NAB Transact для проверки подлинности запроса, а не подделки. Что еще хуже, система NAB Transact даже не имеет API для какой-либо аутентификации какой-либо информации, по сути, очень плохой защиты!

Есть ли способ безопасной аутентификации этих запросов? Например, проверка того, что запросы поступают из списка известных IP-адресов, на которых работает транзакционная система NAB? Или обратный поиск IP? Какие есть варианты и как бы вы реализовали это в PHP?

Разве опора на IP-аутентификацию не настолько безопасна, поскольку ее можно подделать?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Аутентификация на основе IP-адресов подойдет, если вы:

  • знать список IP-адресов (т. Е. Используемых провайдером платежей)
  • IP-адреса являются статическими (очевидно, но если запрос действительно отправляется провайдером, а не, например, через скрытую форму на странице "Платеж успешно выполнен")
  • они немедленно уведомят вас о любых изменениях (или ваш сценарий может отклонить действительные запросы или принять запросы с IP-адресов, которые больше не используются провайдером)
  • все системы, которые могут использовать IP-адрес (т. Е. Серверы провайдера платежей, предполагающие, что центр обработки данных не использует какую-то дрянную настройку сети), достаточно надежны, чтобы не отправлять ложные уведомления.

Подмена исходного IP-адреса невозможна, поскольку в TCP используется трехстороннее рукопожатие, а при подмене IP-адреса рукопожатие не будет выполнено.

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

0 голосов
/ 22 ноября 2011

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

Да, это проблема: :)

Разве IP-аутентификация не настолько безопасна, так как ее можно подделать?

Это вовсе не безопасно!

...