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

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

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

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

1 Ответ

0 голосов
/ 23 июля 2012

Вы можете сделать это легко, используя 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).

...