GWT RPC Data Encryption и gwt-crypto проблема - PullRequest
0 голосов
/ 27 августа 2011

У меня есть приложение GWT, которое развернуто на ядре приложения. Приложение в основном симулятор экзамена. Все вопросы экзамена и ответы хранятся в файле XML на сервере. Я использую анализатор JAXB для анализа XML-файла и отправки списка объектов клиенту через GWT RPC.

Я заметил, что во время транзита (сервер -> клиент) все данные видны в виде обычного текста в Firebug. Поскольку данные (экзаменационные вопросы и ответы) являются моей интеллектуальной собственностью (ИС) и тем, чему я придаю большое значение, я обеспокоен тем, что эти данные очень легко украсть. Поэтому я пытаюсь найти способы сделать какое-то базовое шифрование и скрыть содержимое при его передаче с сервера на клиент.

После Googling я наткнулся на проект gwt-crypto, и через несколько минут я смог достичь именно того результата, который мне нужен. Сервер зашифрует данные, а клиент расшифрует их. В Firebug данные будут отображаться в зашифрованном виде, а не в виде простого текста.

Однако я столкнулся с проблемой. После реализации шифрования / дешифрования я заметил, что мое приложение не загружается в сети моей компании, которая, очевидно, защищена брандмауэром. Приложение отлично работает из дома или даже в сети 3G на моем телефоне. Другая версия приложения, которая не использует шифрование / дешифрование, прекрасно работает в сети моей компании. Я подтвердил это, создав две точно такие же версии приложения, с единственным различием между логическим флагом, который определяет, включено или отключено шифрование / дешифрование.

У меня есть следующие вопросы здесь:

  1. Каков наилучший способ достичь результата, которого я хочу достичь? Является ли gwt-crypto хорошим решением для этого? Я в порядке с любым простым способом запутать данные во время транзита. Это не должен быть сложный алгоритм.

  2. Какая может быть возможная причина для приложения GWT с включенным шифрованием / дешифрованием, который не работает внутри брандмауэра? Я действительно невежественен в этом.

Буду признателен за любую помощь по этому вопросу.

1 Ответ

2 голосов
/ 28 августа 2011

Использование SSL - правильный путь.

В вашем случае, учитывая ограничения SSL AppEngine, вы должны нормально загружать HTML-код из домена, отличного от SSL, и использовать межсайтовый RPC для загрузки данных через домен SSL.

Обновление:

What is the best way to achieve the result that I want to achieve?

Если вы хотите защитить данные при передаче, тогда единственный безопасный способ - это SSL / HTTP. Обычно это также самый простой способ, так как он не требует изменения кода приложения, а только конфигурации сервера. В вашем конкретном случае (приложение с частным доменом) требуется больше работы, как описано выше.

 Is gwt-crypto a good solution for that?

Нет. gwt-crypto использует ключ для шифрования / дешифрования данных. Вам также нужен безопасный способ распространения этого ключа.

I'm fine with any simple approach to obfuscate the data during transit.

Безопасность через неизвестность в не безопасности. Это ложное чувство безопасности, которое даже опаснее, чем отсутствие безопасности. Достаточно того, что только один из технически способных учеников взломает это, и скоро все это сделают.

Возможная атака может быть такой:

  1. Snoop сети, получить имя пользователя / пароль пользователя.
  2. Войдите в систему под этим пользователем, получите данные экзамена загрузки браузера, которые теперь не зашифрованы в памяти.
  3. Дамп DOM и проверка его на предмет экзаменационных вопросов.

-

What could be the possible reason for a GWT app, with encryption/decryption
enabled, not working inside a firewall?

Используйте firebug, чтобы убедиться, что сетевые подключения идентичны, за исключением зашифрованного содержимого. Межсетевые экраны не должны работать так глубоко. Поговорите с сисадмином об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...