Каковы потенциальные проблемы с раскрытием секретности API Facebook?
Я пишу небольшую веб-утилиту, которая публикует обновления статуса в Twitter и/или Facebook. Это связано с созданием "приложений" с этими службами для получения ключей API и "секретов".
Мой вопрос: насколько я защищен, мне действительно нужно сохранить эти секреты - для того, чтобы это вообще работало, вам, похоже, нужен секрет, чтобы взаимодействовать с частью аутентификации службы, чтобы предоставить приложение доступ к вашей учетной записи и/или предоставить ему разрешение на публикацию обновлений от вашего имени. Документация в Facebook говорит, чтобы защитить секрет, но по крайней мере еще одна утилита Facebook распространяет ключ API и секрет в источнике.
Важно отметить: это не ваше стандартное приложение для Facebook, которое работает в контексте Facebook, и не является стандартным "рабочим столом" - скомпилированное приложение - это веб-приложение, предназначенное для запуска на вашем собственном веб-сервере. Аудитория для этого, вероятно, небольшая и несколько более сложная, чем средняя - поэтому одной технической альтернативой было бы требование, чтобы люди получали свой собственный ключ API и секрет для использования этого приложения. Однако это похоже на большую работу и довольно большой барьер для входа к кому-либо, использующему это.
Кто-нибудь знает или имеет какое-либо представление о том, какие проблемы я введу в себя, если я поместил обе секреты и ключи API в конфиг для своего приложения и проверил его в Github для всего мира?
Ответы
Ответ 1
Любой, кто имеет доступ к вашему секретному ключу, имеет полный контроль над вашим приложением. На этой странице отображаются все настройки администратора, которые они могут изменить с помощью admin.setAppProperties
API-вызовов. Это может включать включение приложения в режим разработчика (так что никто не мог его использовать), изменение URL-адреса обратного вызова (который мог бы его разбить) или всевозможные другие вреда.
Я не уверен, что полностью понимаю, что вы пытаетесь сделать, но я думаю, если вы посмотрите на документацию для секреты сеанса тогда вы можете найти решение, которое не связано с вложением секретного ключа приложения, но все же позволяет пользователю взаимодействовать с API. Секреты сеанса используются Facebook Connect и позволяют совершать вызовы API без секретариата приложения. API-вызовы, которые могут быть сделаны с секретом сеанса, как правило, ограничиваются пользователем, взаимодействующим только с их собственными данными. Обновление статуса и предоставление разрешений - это то, что вы можете сделать с помощью комбинации секретов сеанса, Connect и XFBML.
И как Павел уже ответил: делитесь своим приложением секретом с условиями использования Facebook.
Ответ 2
Вы нарушаете свое соглашение, которое дает вам лицензию на использование API facebook. Часть этого соглашения заключается в том, что вы сохраняете свой секретный ключ. Если вы этого не сделаете, они отключат ваш доступ, пока вы не согласитесь соблюдать правила.
Политика III.7 очень понятна:
Вы не должны предоставлять свой секретный ключ другой стороне, если только эта сторона не является агентом, действующим от вашего имени, как оператор вашего приложения, но вы никогда не должны передавать свой секретный ключ в рекламную сеть. Вы несете ответственность за все действия, которые происходят под идентификаторами вашей учетной записи.
http://developers.facebook.com/policy/
Сделайте, чтобы ваши пользователи получили ключ API или переосмыслили вашу архитектуру. Вы не хотите, чтобы facebook прекратил ваш доступ, и подписка на ключ API честно, не так много работает.
Ответ 3
Если вы разрабатываете часть программного обеспечения для других пользователей на своем собственном веб-сервере, каждый веб-сайт, который его использует, должен зарегистрироваться как отдельное приложение. Таким образом, пользователи смогут контролировать доступ, предоставляемый каждому экземпляру вашего кода, вместо предоставления доступа ко всем веб-серверам, использующим его или никому.
Создание нового приложения не сложно. Просто перейдите к http://www.facebook.com/developers/createapp.php