#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.
Также для конечных точек вы можете генерировать случайные поддомены в своем домене и периодически изменять их.