Отказ от ответственности: я являюсь основным автором easyXDM.
На самом деле нелегко ответить на этот вопрос напрямую, так как нужно учитывать множество вещей.
Во-первых, давайте сравним easyXDM и JSONP вне рамок вопроса.
JSONP позволяет программе на стороне клиента (Javascript, использующей BOM/DOM) взаимодействовать с программой на стороне сервера (.net, php и т. д. с использованием базы данных, хранилища сеансов и т. д.), и только клиент может инициировать обмен сообщениями (запрос/ответ, опрос или push-уведомление, хотя для push-уведомлений вы можете легко установить IMG.src, сделать XHR или сообщение FORM, поскольку вам не требуется ответ).
клиент ограничен в количестве данных, которые он может отправить на сервер, и эти данные также должны быть отформатированы, чтобы соответствовать параметру строки запроса, и сервер должен быть настроен для ответа на указанные данные. Для каждого сообщения выполняется сетевое путешествие с соответствующей стоимостью.
easyXDM упрощает обмен сообщениями между любыми двумя клиентскими программами, используя транспортный стек на основе строк. Нет необходимости в каких-либо программах на стороне сервера, и нет сетевого трафика. Обе стороны равны и могут инициировать обмен сообщениями, и обе могут сохранять состояние на клиенте (отсюда термин программы вместо простого Javascript). Сообщения не ограничены по размеру, и пока данные могут быть сериализованы в строку, транспорт может их обработать (easyXDM позволяет установить собственный сериализатор или использовать JSON).
Основное различие между ними заключается в том, что одна находится между клиентом и сервером, где только клиент может инициировать обмен сообщениями, а другая — между двумя равными клиентскими программами, где либо одна из них может использовать XHR и другие средства для связи, либо ретранслировать. данные на сервер.
Что касается безопасности; JSONP требует, чтобы клиент абсолютно доверял серверу, ведь он позволяет запускать произвольный код в своей программе. Помимо этого, есть несколько проблем, но это серьезная проблема.
С easyXDM передается только информация (строка), а не код, и получатель должен проверить информацию и действовать в соответствии с ней. Таким образом, абсолютно отсутствует риск выполнения произвольного кода. Хотя вышеизложенное верно, некоторые из компонентов, на которые easyXDM полагался для установления канала, были уязвимы для XSS (специально созданный URL-адрес заставлял клиент выполнять произвольный код), но они были закрыты. В настоящее время такие уязвимости неизвестны, и весь новый код тщательно проверяется.
Я сам использую easyXDM для нескольких ресурсоемких проектов, а такие сайты, как LinkedIn, Twitter и Disqus, а также приложения Nokia и других компаний создали свои приложения на основе платформы обмена сообщениями, предоставляемой easyXDM, поэтому Есть много людей, которые просмотрели код и проверили его, и которые, используя его, ручаются за его безопасность.
В конце концов, речь идет о прецеденте. Например, JSONP нельзя использовать для изменения размера окна в разных доменах, так как для этого требуется связь клиент-клиент. Но easyXDM можно использовать как для клиента/клиента, так и для клиента/сервера, если одна из сторон использует XHR.
В вашем случае ни один из них на самом деле не требуется, если вам нужно просто сделать небольшую часть информации доступной в незащищенном домене.
- Перемещайтесь по защищенному домену, установите файл cookie на незащищенном.
- Перемещайтесь по защищенному домену, перенаправляйте его на небезопасную передачу информации в своем запросе.
- Перемещайтесь по защищенному домену, храните данные в window.name перед перенаправлением на незащищенный.
Если жизненно важно, чтобы информацию нельзя было подделать, то вам для всего этого нужно подписать данные, чтобы можно было подтвердить их подлинность, но если все, что вам нужно, это имя, то в этом нет необходимости.
Простой способ проверить подлинность - это
- В незащищенном домене создайте случайный секрет и сохраните его, а затем перенаправьте на незащищенный домен, передав секрет.
- В безопасном домене передать секрет вместе с информацией (используя любой из способов, описанных выше)
- на клиенте убедитесь, что информация содержит секрет.
Поскольку только две стороны могут иметь секрет, информация проверяется.
В заключение однозначного ответа на самом деле нет, все зависит от ситуации. Так что выбирайте, но выбирайте с умом :)
person
Sean Kinsey
schedule
10.09.2011