Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.04.2011, 22:22
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от FINoM Посмотреть сообщение
Сервер A (a.com) - поставщик данных
Сервер B (b.com) - один из серверов который имеет право на доступ к данным
Сервер E (e.com) - не имеющий доступа к данным.

Пытаюсь придумать, как реализовать поддержку всех пунктов вместе:
1. Дать возможность пользователю, зашедшему на b.com использовать данные с сервера a.com через ajax
2. Разрешить серверу b.com получать данные на стророне сервера, например с помощью php
3. Запретить пользователю, зашедшему на e.com пользоваться данными, которы поставляет a.com
4. Запретить серверу e.com получение данных со стороны сервера
На самом деле нету никакой проблемы.
Нужно фильтровать запросы по http-заголовкам.

Браузер всегда сообщает адрес страницы с которой был совершен запрос (HTTP referer). И если этот запрос пришел со страницы расположенной на сервере b.com то в ответ возвращаем данные, иначе сообщение об ошибке или на свое усмотрение. Конечно это не позволяет реализовать кроссдоменный AJAX но это вполне подойдет к Script и XhrIframeProxy

В случае когда запросы приходят с серверных скриптов то отфильтровывать их еще проще. Можно фильтровать по IP, также можно придумать собственный заголовок для общения между серверными скриптами расположенными на разных серверах.

Последний раз редактировалось Magneto, 14.04.2011 в 22:26.
Ответить с цитированием
  #12 (permalink)  
Старый 16.04.2011, 02:27
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Magneto
Нужно фильтровать запросы по http-заголовкам.
http заголовки всегда можно подменить.
Сообщение от Magneto
Можно фильтровать по IP
Да, но юмор в том, что у клиентов (посетителей) всегда будет "левый" айпи, то есть, злоумышленник, имея некоторый опыт, может легко эмулировать клиента, передавая нужного реферера, юзерагент и т. п.
Сообщение от Magneto
Конечно это не позволяет реализовать кроссдоменный AJAX
Эм... Почему?

Последний раз редактировалось FINoM, 16.04.2011 в 02:30.
Ответить с цитированием
  #13 (permalink)  
Старый 16.04.2011, 02:44
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Напоминает: "Смотрю в книгу - вижу фигу".

По IP фильтруем только обращения с других серверов. Причем здесь IP пользователей.

Цитата:
злоумышленник, имея некоторый опыт, может легко эмулировать клиента, передавая нужного реферера, юзерагент и т. п.
Поспешу огорчить, от данной проблемы нету 100% эликсира, всегда есть возможность притвориться браузером и послать нужные заголовки.
Ответить с цитированием
  #14 (permalink)  
Старый 16.04.2011, 03:51
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Magneto
По IP фильтруем только обращения с других серверов. Причем здесь IP пользователей.
Это сработает только в случае не использования злоумышленником средств для замены заголосков.
Сообщение от Magneto
Поспешу огорчить, от данной проблемы нету 100% эликсира, всегда есть возможность притвориться браузером и послать нужные заголовки.
Согласен. Но, возможно, есть более "умный" способ, например, какой-нибудь обмен ключами или способ отправки данных, который доступен только клиенту.
Ответить с цитированием
  #15 (permalink)  
Старый 16.04.2011, 12:51
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

использование $_SESSION , мне кажется, будет хорошей идеей
Ответить с цитированием
  #16 (permalink)  
Старый 16.04.2011, 16:48
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
использование $_SESSION , мне кажется, будет хорошей идеей
id сессии передаётся в заголовках с обеих сторон. То есть его можно тоже принять и отправить.
Ответить с цитированием
  #17 (permalink)  
Старый 16.04.2011, 16:58
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

тогда заюзайте куки,как в вконтакте

коротко: там есть кука, UID (неважно) , коотрая является md5-хешем чего-то , чего-то и IP-адреса

если куку в ВК перехватывают и пытаются залогиниться под ней,
то конечный md5 вашего IP (или что там еще) не совпадает, далее хакера кидает на главную страницу

можно так сделать:

при заходе на страницу отправки файлов юзверю присваивается его UID, в котором хранится md5 IP, соли, USERAGENT`a ( ведь он не будет менять браузер или ОС, когда будет загружать файл)

этот UID будет в куке.

на PHP проверяем всё это , собирая такой же md5 того же списка.

хеш не совпал? какой ужас, пишем , что возникла ошибка. попробуйте повторить ещё
Ответить с цитированием
  #18 (permalink)  
Старый 16.04.2011, 17:10
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

melky, снова повторюсь, сервер злоумышленника может отсылать куки, юзерагент, ip так же как и клиент.
Ответить с цитированием
  #19 (permalink)  
Старый 16.04.2011, 17:22
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

если он будет "злоумышленничать" через прогу, Javascript все равно не будет исполняться
Ответить с цитированием
  #20 (permalink)  
Старый 17.04.2011, 10:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от FINoM
Если я не ошибаюсь, в хроме уже достаточно давно работают сокеты и никому от этого плохо еще не стало.
http://en.wikipedia.org/wiki/WebSock...ting_WebSocket
Цитата:
Chrome also plans to disable the WebSocket if actual exploit code appears before the protocol is revised.
просто уязвимость существует, а как к этому относятся производители браузеров - другой вопрос. Как видим, мнения разделились. Может быть для твоего приложения это не важно, но это может быть важно для кого-то другого

Сообщение от FINoM
Эм.. А какая разница? Используется ведь один протокол, просто там реализация в браузере нативная, а там через флеш.
нет, протоколы разные. И если ты используешь web socket'ы, то есть опасность того, что тебя скомпрометируют. Если ты делаешь fallback в flash, ты не решаешь проблему с уязвимость. Если исопльзуешь только флеш - решаешь, но отказываешься от возможностей web sockets

Сообщение от x-yuri
Или тебя смущает, что javascript не может самопроизвольно получить доступ к любому файлу на клиенсткой машине?
Сообщение от FINoM
Нет. Причем здесь это?
при том, что ты не обходишь политику безопасности, а передаешь файл средствами html, потому что в js такой возможности не было. И кроссдоменный ajax - это тоже скорее всего просто так изначально было реализовано, а потом стало понятно, что не учли

Сообщение от Magneto
Нужно фильтровать запросы по http-заголовкам.
Сообщение от FINoM
http заголовки всегда можно подменить.
ip-адрес - не http-заголовок, если же речь о forwarded-for - то не стоит рассчитывать, что он корректный

Сообщение от FINoM
Поспешу огорчить, от данной проблемы нету 100% эликсира, всегда есть возможность притвориться браузером и послать нужные заголовки.
Сообщение от FINoM
Согласен. Но, возможно, есть более "умный" способ, например, какой-нибудь обмен ключами или способ отправки данных, который доступен только клиенту.
может быть и есть, просто не всегда разумно его использовать. А именно, цифровые сертификаты

Сообщение от FINoM
melky, снова повторюсь, сервер злоумышленника может отсылать куки, юзерагент, ip так же как и клиент.
давай уточним условия? Из твоих слов получается, что злоумышленник может получить куки любого пользователя и перехватить любую информацию. Причем есть два вида злоумышленников: 1) владелец сервера E и 2) владелец браузера, у которого нету доступа ни к A, и ни к B
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
Как передать id во всплывающее окно Legolas Общие вопросы Javascript 4 21.04.2010 22:50
Как заставить браузер использовать закэшированное изображение? fog Общие вопросы Javascript 5 13.08.2009 15:40
Как предварительно загруженное изображение сделать бэкграундом? hrundel Общие вопросы Javascript 1 02.08.2009 12:45