Можем ли мы скрыть URL-адрес журнала ошибок политики безопасности контента?

#asp.net #asp.net-core #content-security-policy

Вопрос:

Когда мы используем CSP, мы можем ввести для него URL-адрес ошибки в журнале, каждый раз, когда возникает ошибка, ошибка с подробностями будет отправлена на URL-адрес, и я могу ее зарегистрировать, не опасно ли, что все знают нашу ошибку в журнале URL-адресов CSP ? например, каждый может отправить поддельные данные в журнал ошибок CSP URL.
Можем ли мы скрыть их от общественности ?

 content-security-policy: default-src 'self'; report-uri /api/CspReport/Log
 

Ответ №1:

Вы не можете скрыть конечную точку отчетов CSP, разработчики CSP предполагают, что ее можно безопасно раскрыть.

Нет смысла спамить конечные точки CSP, потому что:

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

Поскольку этот вид спама не имеет рентабельности инвестиций (рентабельности инвестиций), никто не будет тратить свои ресурсы впустую.

Примечание: если вас это очень беспокоит, то можно организовать защиту по типу ложных целей, которые разбрасывают самолеты для защиты от ракет.
Вы можете указать множество конечных точек CSP в uri отчета, и только одна будет реальной конечной точкой. Другие ничего не сделают и просто вернут 204 Без содержимого или 200 ОК, как это делает реальная конечная точка CSP.

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