Могу ли я требовать использования HTTPS для URL-адресов холста для защиты содержимого signed_request?

Я пишу новое приложение на основе холста, используя подход iframe. Мой бэкэнд поддерживает как HTTP, так и HTTPS для ответов холста, но кажется, что по умолчанию Facebook переводит пользователей на HTTP и отправляет все важные учетные данные (т. Это, конечно, уязвимость безопасности в общих сетях (кафе, офисы и т. д., где было бы тривиально перехватить токены доступа).

Как я могу заставить все мои запросы холста работать через HTTPS и защитить учетные данные моих пользователей?

Я думаю, что все разработчики должны хотеть — или быть обязаны — делать это. Хотя я новичок в разработке Facebook, я удивлен, что они не будут использовать HTTPS для всех прямых передач токенов доступа пользователей. В Oauth 1.0 были механизмы, позволяющие использовать токены доступа через HTTP (поскольку запросы должны были быть подписаны клиентским приложением), но OAuth 2.0 отказался от всего этого в пользу использования HTTPS для любого запроса со встроенными учетными данными. Facebook помог разработать OAuth 2.0 и, как ни странно, подрывает безопасность дизайна, отклоняясь от использования HTTPS в запросах холста.


person Yetanotherjosh    schedule 12.10.2011    source источник


Ответы (1)


Вы можете сделать это легко, используя PHP или JavaScript. Все, что вам нужно сделать, это определить, использует ли пользователь HTTP, и вместо этого перенаправить его на HTTPS. Пример:

<script>
if ( window.location.protocol == 'http:' ) {
   window.top.location = 'https://facebook.com/yourapp';
}
</script>

Приведенный выше код проверит, загружен ли iframe с использованием HTTP. Если это так, он сбросит родительский URL-адрес (например, facebook), чтобы указать на HTTP-версию вашего веб-сайта (следовательно, загрузка iframe также с использованием HTTPS).

person Niraj Shah    schedule 23.07.2012
comment
Спасибо, но к тому времени, когда этот javascript выполнит, важные учетные данные сеанса уже будут отправлены по HTTP в открытом виде. Чтобы на самом деле защитить сеанс, он должен быть HTTPS с самого начала... - person Yetanotherjosh; 24.07.2012
comment
Вы всегда можете удалить незащищенные URL-адреса для доступа к вашему приложению из настроек приложения. - person Niraj Shah; 24.07.2012