Сразу хочу обратить внимание, я конкретный чайник, только начинаю изучать информационную безопасность и все, что с ней связано.
Цель - разрешать читать и выводить содержимое страницы user_info.html домена localhost только с домена trustedhost.com
Есть файл user_info.html с произвольным содержимым на домене localhost, к которому делается запрос.
Так же есть файл request.html на домене attacker.com, с которого отправляется XHR запрос:
<body>
<script>
function loadData() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://localhost/user_info.html", false);
xhr.send();
if (xhr.status != 200) {
alert(xhr.status + ': ' + xhr.statusText);
} else {
alert(xhr.responseText);
}
}
</script>
<button onclick="loadData()">getdata</button>
</body>
Файл конфигурации nginx:
location / {
add_header 'Access-Control-Allow-Origin' 'http://trustedhost.com';
try_files $uri $uri/ =404;
}
Проблема заключается в заголовке ответа CORS на XHR запрос, выглядит так:
Access-Control-Allow-Origin: *
Такое значение заголовка только в запросе XHR.
То есть выглядит все так, будто конфиг nginx не применяется именно для cors запроса. В запросе за страницей сервер выдает заголовки как нужно.