Чем опасно указывать Access-Control-Allow-Origin: * (разрешить доступ к ресурсу из любого источник) на сервере?



@gera7

Есть платежная система, запросы на создание платежей осуществляются по API.
Её документация написана под .php, но я знаю JavaScript и пробую отправлять XMLHttpRequest/Fetch запросы, при этом ловлю ошибку:
«No ‘Access-Control-Allow-Origin’

На сейчас я вижу 2 варианта:
1. Поднять свой прокси сервер для обхода CORS. Запросы уходя на прокси, прокси отправляет запрос на сервер и получает ответ к которому добавляет Access-Control-Allow-Origin и присылает браузеру. (этот вариант рабочий, тестил на общедоступном прокси серваке).
2. Написать в поддержку платежной системы и попросить добавить Access-Control-Allow-Origin: *

Вопрос:
1. Какие минусы у первого варианта?
2. Чем опасно для платежной системы разрешить доступ к ресурсу из любого источника согласно 2 варианта?
3. Возможно ли внесение правок с их стороны или меня проигнорируют?

Если Access-Control-Allow-Origin: * небезопасный метод, почему в таком случае его так легко обойти через прокси?


Решения вопроса 0


Ответы на вопрос 3



@balamyt92

2. Чем опасно для платежной системы разрешить доступ к ресурсу из любого источника согласно 2 варианта?

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

3. Возможно ли внесение правок с их стороны или меня проигнорируют?

Над вами посмеются, попадёте в юмористическую подборку «клиент хочет странного» во внутренней рассылке.

1. Какие минусы у первого варианта?

Ну это уже ваш ресурс и его уязвимости.



@profesor08

2. Написать в поддержку платежной системы и попросить добавить Access-Control-Allow-Origin: *

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

Поднять свой прокси сервер для обхода CORS

Если первый вариант не прокатит, то можно отсылать запросы на свой php скрипт, который будет слать запросы в платежку через curl.

Либо заморочиться с отдельным прокси.



@SagePtr

Если методы API предназначены для взаимодействия сервер-сервер — то и дёргать их нужно на стороне сервера в PHP-скрипте вашем, а не выносить это на клиент. Если платёж создадите на стороне клиента — то как потом ваш сервер удостоверится, что оплата там действительно была?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *