Лучшая практика : Законные Cross-Site Scripting

в то Время как cross-site scripting, как правило, рассматривается как негативное, я бежал в несколько ситуаций, когда это необходимо.

недавно я работал в пределах очень много ограничений системы управления контентом. Нужно включить код базы данных в страницу, но сервер, на котором размещен в голову ничего не доступна полезная. Я установил пару barebone-скрипты на своем сервере, первоначально думая, что я мог бы использовать AJAX для импорта содержимого моих скриптов непосредственно в шаблон CMS (таким образом, сохраняя динамических изображений, элементов меню, CSS и др.). Я был неправ.

из-за ограничений объектами XMLHttpRequest, это не возможно, чтобы схватить содержимым из различных доменов. И я подумал : "iFrame" - я хоть и не фанат кадров, я думал, что я мог создать фрейм, который соответствует ширину и высоту содержимого, так что, казалось бы, родной. Я снова был заблокирован cross-site scripting "средства защиты." А я и в самом деле мог загрузить удаленный файл в iFrame, я не смог выполнить JavaScript для изменения ее размера, либо на хост-странице или внутри загруженной странице.

В этом конкретном случае, я не смог точки поддомен на мой сервер. я также не мог создать скрипт на CMS прокси-сервер, который может контента с моего сервера, так что моя последняя мысль была для использования удаленного JavaScript.

удаленный JavaScript работает. Он ломается, когда пользователь отключен JavaScript, который является недостатком, но это работает. "Проблема" я имел с использованием удаленного кода JavaScript, что мне пришлось использовать JS функцию document.write() для вывода какого-либо содержания. Любой вывод, что JS не вызывает ошибки сценария. В дополнение к использованию метода document.write() для каждой строки, вы также должны обеспечить, чтобы содержание убежал - иначе вы в конечном итоге больше ошибок сценария.

Мое решение было следующим:

Мой сценарий получил GET-параметров ("стр."), а затем стали искать файл ({$page}.php), и прочитать содержимое в переменную. Однако, я должен был использовать неловко буферизации методы для того, чтобы фактически запустить в Интернет сценариев (такие вещи, как взаимодействие с базой данных), то лишить окончательное содержимое всех символа разрыва строки ("\") с последующим спасаясь все необходимые символы. Конечный результат заключается в том, что мой оригинальный сценарий (который выводит JavaScript) обращается к, казалось бы, "стандарт" скрипты на своем сервере и преобразует их в стандартный выходной поток -- на JavaScript для отображения в CMS шаблон.

в то Время как это решение работает, кажется, что там может быть лучший способ сделать то же самое. Что является лучшим способом, чтобы сделать cross-site scripting работы, в частности с целью в том числе контент другом домене?

Найдено 5 ответов:

Best Practice: Legitimate Cross-Site Scripting

http://stackoverflow.com/questions/52646/best-practice-legitimate-cross-site-scripting

Посмотреть решение →