Скрытие уникальных ключей API в webOS (Enyo/JavaScript)

Как мне скрыть мои личные ключи API в/для моих приложений на базе webOS - Enyo?

Мое развитие в основном остановилось из-за этой проблемы.

Поскольку WebOS Enyo (как и Mojo) написана на Javascript, любой пользователь может подключить свое устройство и легко просмотреть мой исходный код. Так что, очевидно, я не могу просто воткнуть туда свои ключи. Даже если они зашифрованы, мое приложение должно включать механизм их расшифровки, чтобы использовать их. Я хочу скрыть свои ключи API частных веб-сервисов (в основном OAuth Twitter, Facebook, Google и т. д.) и, возможно, мои закрытые ключи AWS.

До сих пор в ответах, которые я нашел, говорилось, что вы не можете защитить что-либо вроде закрытого ключа API в Javascript. Но все эти обсуждения касались веб-приложений, которые имеют простые альтернативы использованию Javascript. Приложения WebOS на самом деле не имеют достойной альтернативы кодированию простых приложений на Javascript.

Единственный путь, который я вижу возможным, - это создать прокси, через который будут проходить все мои вызовы API. Это единственный возможный или идеальный вариант? Если это так, поможет ли мне здесь node.js?

Будем очень признательны за любые выводы, ресурсы, примеры, советы и т. д. Я чувствую, что ответ должен бросаться мне в глаза, поскольку в настоящее время так много приложений подключаются к этим службам, но у меня не было потенциальных клиентов. Спасибо.


person Dexter    schedule 16.07.2011    source источник
comment
Добро пожаловать в СО. Вы можете обновить свой вопрос, отредактировав его. Вы можете голосовать за вопросы (голосовать за или против), и если вы получите ответ, который удовлетворяет ваши потребности и отвечает на ваш вопрос, вы можете пометить его как ответ   -  person Eugene Mayevski 'Callback    schedule 16.07.2011


Ответы (3)


Ни одно приложение любого типа, имеющее закрытые ключи на стороне клиента, подобные этому (кроме полностью общесерверного), не защищено от посторонних глаз. Это относится и к скомпилированному приложению C++ для Windows. Если приложение будет использовать закрытые ключи напрямую, то они находятся в коде или доступны для кода. Любопытные глаза могут найти их. Да, Javascript может сделать код немного более доступным, но это не новая проблема для приложений WebOS или Javascript. Если бы Enyo был кроссплатформенным инструментом для ПК/Mac, разве у вас не было бы такой же проблемы с вашими ключами Twitter?

Обычно ключи помещаются в какой-то механизм хранения во время установки. На ПК это может быть реестр или какой-либо файл конфигурации. Есть ли в webOS механизм установки? Похоже, у них есть хранилище типа HTML5 — можете ли вы хранить их там во время установки. Они не будут защищены от взлома (как и на любой другой платформе), но они также не будут лежать в вашем коде Javascript.

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

Если я неправильно понял вашу ситуацию, не стесняйтесь пояснить и помочь мне лучше понять.

person jfriend00    schedule 16.07.2011
comment
Для webOS нет механизма установки. Однако, начиная с webOS 2.0, служба KeyManager была представил. Согласно форумам, вы можете отправить электронное письмо на Palm (HP webOS), чтобы зашифровать что-либо (например, ключ) для включения в ваше приложение. Я, скорее всего, сейчас выберу прокси-сервис, потому что я могу использовать его для некоторых дополнительных интересных функций (см. Другой ответ ниже). Я, вероятно, также буду использовать этот KeyManager в конечном итоге. Спасибо за вашу помощь! - person Dexter; 18.07.2011

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

person Eugene Mayevski 'Callback    schedule 16.07.2011

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

person haX0r    schedule 21.07.2011