Cloudflare использует Reverse Proxy, из-за чего нельзя получить реальный IP пользователя через
$request->userIP
, что нарушает работу сайта, в частности обработки запросов от платежных систем.
Реальный IP хранится в заголовке "CF-Connecting-IP". В Yii2 есть функция для изменения механизма получения IP:
Trusted proxies and headers. Но нас настоятельно просят заполнять
trustedHosts
, но
заранее неизвестно откуда Cloudflare будет слать данные.
Если прописать конфигурацию, где только перечислить откуда брать заголовки для IP - всё работает "как надо":
'request' => [
// ...
'ipHeaders' => [
'CF-Connecting-IP',
'X-Forwarded-For',
],
]
Но не подвергается ли сайт
опасности из-за подмены заголовка?
Я попробовал подменить "CF-Connecting-IP" на свой, на что сам Cloudflare отдал ошибку: "DNS points to prohibited IP". Достаточно ли защиты от самого Cloudflare или что-то ещё нужно предпринять?