Я работаю над реализацией веб-ошибки JavaScript, которая будет вставлена на веб-страницы нашего клиента. Одна из возможностей, которую хотели бы видеть наши клиенты, - это способ передачи фрагментов HTML на своих веб-страницах на наш сервер через веб-баг. Мы используем JSONP, и сервер, на котором размещена веб-ошибка JavaScript, отличается от сервера, на котором размещена страница we. Основная идея такова:
var element = document.getElementById(id);
var html = element.innerHTML;
//Encodes HTML into GET request www.example.com/script?html=encodedhtml
var url = getSrcUrl(html);
document.write(unescape("%3Cscript src='" + url + "' type='text/javascript'%3E%3C/script%3E"));
Проблема безопасности заключается в том, что любой может отправить запрос на наш сервер с произвольным HTML-кодом, который отсутствует на веб-странице, на которой размещена веб-ошибка. Есть ли способ сделать это безопасным?
Я знаю, что мы можем проверить заголовки HTTP для реферера, но это легко подделать. Я видел некоторые идеи, когда сервер передавал уникальный токен, который должен был быть возвращен в запросе GET, но, похоже, это тоже можно было подделать.
Я догадываюсь, что то, что мы пытаемся сделать, не может быть сделано безопасно, но я хотел передать это сообществу, чтобы посмотреть, есть ли что-то умное, что можно сделать. В противном случае мне придется создать скребок для экрана, который загружает страницы непосредственно от наших клиентов и извлекает соответствующий HTML-код для их страницы.
Спасибо за любую помощь!
EDIT
Для ясности, веб-страницы нашего клиента общедоступны без защиты. Другими словами, любой пользователь Интернета может посетить страницу и выполнить ошибку JavaScript, которая передает фрагмент HTML.
РЕДАКТИРОВАТЬ 2
Приемлемый ответ: «это невозможно»! Если это так, и вы даете хорошее объяснение, почему, я выберу его в качестве принятого ответа.
РЕДАКТИРОВАТЬ 3
То, что мы создаем, является своего рода системой Google Analytics для наших клиентов. Мы пытаемся отследить посещения уникальных «предметов» каждым посетителем, а затем автоматически собираем информацию об этом предмете с помощью фрагмента HTML. Затем мы вставим информацию об элементе на другие страницы, вставив фрагмент HTML, который мы собрали из исходного элемента. Мы пытаемся сделать все это, не требуя от наших клиентов установки чего-либо на свои серверы и просто включив веб-ошибку JavaScript в их HTML.