Безопасность Javascript / кросс-скриптинг на одном сервере - PullRequest
1 голос
/ 01 декабря 2009

У меня есть Javascript, который мне нужен для работы через:

: // локальный

: // имя_сервера

: / www.domainnamefortheserver.com

Когда я запускаю скрипт из http://servername с IFRAME, ссылающимся на домен - он не загружается.

Есть ли способ заставить модель безопасности Javascript распознавать имя сервера, локальный хост и домен как один и тот же "домен"?

Спасибо

Ответы [ 4 ]

2 голосов
/ 01 декабря 2009

Если вы используете серверный язык для генерации страницы, вы можете установить домен безопасности следующим образом:

document.domain = $CURRENT_HOSTNAME;

Таким образом, домен безопасности будет доменом, запрошенным пользователем. Это выстрел в темноте, но я надеюсь, что он, тем не менее, помогает.

2 голосов
/ 01 декабря 2009

Если вы работаете в UNIX, вы можете отредактировать / etc / hosts, чтобы создать поддельную запись DNS для вашего сервера.

например.

127.0.0.1 localhost www.domainnamefortheserver.com

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

Это также будет работать на OSX. Windows работает иначе, я ожидаю.

1 голос
/ 01 декабря 2009

Использовать корневые относительные URI:

href="/foo/bar"

, а не абсолютные URI:

href="http://example.com/foo/bar"

Таким образом, документ будет загружен с того же имени хоста.

0 голосов
/ 01 декабря 2009

Что вы подразумеваете под

мои ссылки на доменное имя

Если вы загрузите скрипты на своей странице в http://servername (используя <script src=''>), они будут иметь доступ ко всему на http://servername,, даже если они приходят из другого домена.

Однако, если вы попытаетесь совершить AJAX-вызовы в другой домен, у вас возникнет проблема. Вы можете использовать хитрость, объясненную Кристофером, то есть создание псевдонимов для домена.

...