Ajax: как отдавать xml-документ только определенной странице?

12 3
psylosss
На сайте с 23.12.2005
Offline
126
1511

Исходные данные:

Есть страница page.html, на которой JavaScript запрашивает XML-документ.

Есть data.xml - документ, либо скрипт, генерирующий документ.

Вопрос:

как сделать так, чтобы data.xml выдавался в ответ на запрос только со страницы page.html ?

Неверные ответы:

1. Проверять при выдаче документа REFERER. Не подходит, потому что слишком легко подделывается

2. Внедрять какой-то ключ (session_id например) в page.html, а при выдаче документа сверять ключи. Не подходит, потому что можно посмотреть ключ и сделать запрос с ним.

Веб-разработка. Сложные проекты. Проектирование. Проект-менеджмент. Стартапы.
dkameleon
На сайте с 09.12.2005
Offline
386
#1

psylosss,

Наводящий вопрос:

какие данные нельзя подменить в заголовке ХТТП запроса?

Дизайн интерьера (http://balabukha.com/)
psylosss
На сайте с 23.12.2005
Offline
126
#2

dkameleon, да вроде как все можно. Значит, какой-то ключ все же должен быть (в сессии). Но как его использовать? Просто передавать его в открытом виде нельзя

dkameleon
На сайте с 09.12.2005
Offline
386
#3

psylosss,

о! тогда по каким уникальным не подделанным данным ты предлагаешь определить страницу?

единственная вещь, которую на сколько мне известно, не просто подделать в сокетах - это порт и айпишник, с которого было открыто соединение.

Далее идёт простая пересылка даных:

REQUEST ----------->

RESPONSE <----------

CLOSE ------------->

CLOSE <-------------

или в таком дуже.

все данные, передаваемые в REQUEST пользователь может, и формирует произвольным образом.

Можно узнать, в чём вообще заключается проблема, если вдруг кто-то решит сделать посторонний запрос?

psylosss
На сайте с 23.12.2005
Offline
126
#4

Нет, IP и порт не подходят. Они же будут меняться от запроса к запросу.

Видимо, нужен все же ключ. Может быть, его шифровать как-то...

S
На сайте с 20.08.2006
Offline
2
#5

поправьте если не так. но по этому поводу думал и пришел к выводу что никак (поскольку запрос на page тоже можно подделать), если только

не использовать https.

Продвижение. Долго и недешево. Гарантий нет.
A
На сайте с 21.08.2006
Offline
1
afi
#6

Архитектура клиент-сервер подразумевает, что сервер ничего не знает о клиенте, а посему, клиент в любом случае должен передавать какой-либо идентификатор. Как вариант, вставлять в page.html ключ в виде хэша (например md5), состоящего из sessionId и имени хэндлера (data.xml). На стороне сервера легко будет проверить, были ли данные запрошены со страницы page.html. Даже если "подсмотреть" этот ключ, использовать его с другой страницы будет невозможно.

S
На сайте с 20.08.2006
Offline
2
#7
afi:
Архитектура клиент-сервер подразумевает, что сервер ничего не знает о клиенте, а посему, клиент в любом случае должен передавать какой-либо идентификатор. Как вариант, вставлять в page.html ключ в виде хэша (например md5), состоящего из sessionId и имени хэндлера (data.xml). На стороне сервера легко будет проверить, были ли данные запрошены со страницы page.html. Даже если "подсмотреть" этот ключ, использовать его с другой страницы будет невозможно.

а что мешает сначала запросить page (и узнав код) дальше использовать data.xml?

dkameleon
На сайте с 09.12.2005
Offline
386
#8
smik:
если только
не использовать https.

Даже если использовать, то подделать можно ещё до шифрования :)

psylosss
На сайте с 23.12.2005
Offline
126
#9

мда. Неужели неразрешимая задача? В первый раз с такой сталкиваюсь в вебе...

S
На сайте с 20.08.2006
Offline
2
#10
dkameleon:
Даже если использовать, то подделать можно ещё до шифрования :)

Да точно. Получается примерно так - если любой клиент может использовать page.htm, то любой сможет и xml использовать.

Остается только отфильтровывать неугодные ИП.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий