Как избежать утечки информации о пользователе в AdSense из приложения Facebook Connect

У меня есть приложение Facebook Connect, которое я монетизирую с помощью Google AdSense. Я хочу быть уверен, что не передаю никакую информацию о пользователях Facebook, такую ​​как номер идентификатора пользователя Facebook или токен доступа (в котором есть идентификатор пользователя).

AdSense является абсолютно законным и соответствует политике Facebook для приложений Connect. Мне просто нужно убедиться, что Google не может видеть информацию, которая идентифицирует пользователя.

Я хорошо знал об этих требованиях, когда разрабатывал свое приложение, и думал, что он у меня есть, но потом я получил одно из известных автоматических предупреждений от Facebook, в котором было написано:

"Наши автоматизированные системы обнаружили, что вы можете непреднамеренно разрешить передачу данных аутентификации третьим лицам".

он также заявил:

"В каждом рассматриваемом нами случае эта информация передается через заголовок HTTP Referer браузером пользователя".

Опять же, я уже был знаком с этим вектором утечки, который происходит, когда Facebook помещает токен доступа в строку запроса, когда он перенаправляет обратно в ваше приложение после аутентификации пользователя. У меня уже есть проект, в котором я выполняю это через перенаправление OAuth 2.0 на стороне сервера, получая "код" и обменивая его на токен доступа. Этот метод описан здесь, в разделе аутентификация на стороне сервера: https://developers.facebook.com/docs/authentication/

В моем приложении я делаю обмен кода на токены в отдельном контроллере ASP.NET MVC, который не имеет представлений, поэтому в него не включены Adsense или какие-либо сторонние ресурсы. Поэтому я уверен, что все содержимое моего поля заголовка и строки запроса являются чистыми и не содержат пользовательских данных.

Однако, учитывая, что я получил уведомление по электронной почте от Facebook и не хочу, чтобы мое приложение и денежный кран AdSense были отключены, я теперь параноидален, что есть еще одно место, где я передаю данные. С другой стороны, в электронном письме говорится, что мое приложение "может быть" пропускает информацию (о, почему они не могут просто сказать мне то, что увидели, или, по крайней мере, быть уверенным, что оно пропускает, а не просто "может пропустить"), и это говорит, что каждый случай произошел из-за реферера / строки запроса, что, опять же, я уверен (выполнив трассировку Fiddler), мое приложение чистое.

Я вижу только один возможный способ утечки информации, но я не уверен, что это реальный риск или просто отсутствие понимания с моей стороны того, что именно AdSense (и Google Analytics) могут видеть из содержимого моего приложения на страница, требующая аутентификации пользователя.

У меня есть представление (страница), где я помещаю токен доступа в скрытое поле формы. Он помещается туда, когда страница первоначально обслуживается (после аутентификации пользователя), а затем впоследствии обновляется с помощью Javascript (с использованием JS SDK Facebook), поэтому, когда пользователь отправляет форму обратно на сервер, я получаю обновленный access_token если это изменилось. Маркер доступа может измениться, потому что я использую Javascript SDK для запроса дополнительных разрешений на этой странице, включая в некоторых случаях расширенное разрешение offline_access. Получение offline_access сгенерирует новый access_token, срок действия которого не истекает.

Это на странице, которая требует аутентификации пользователя, чтобы увидеть его, поэтому я решил, что AdSense не может видеть содержимое страницы. У меня действительно есть настройка представления для отображения в общем виде (без информации о пользователе) со всем одним и тем же текстом, если пользователь не аутентифицирован, но с добавлением приглашения "Войти сейчас", поэтому Adsense может индексировать страницу и предоставлять релевантные контекстные объявления.

Я знаю о том факте, что Facebook только вчера запустил новые функции OAuth 2.0 Javascript SDK, но не могу принять это сразу, поскольку он не будет работать с Facebook C# SDK, который я использую на стороне сервера. И даже при этом, если у меня возникнет проблема с помещением токена доступа в скрытое поле формы, эта проблема все равно останется.

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

Может быть, более простой способ думать об этой проблеме: "Может ли Google AdSense увидеть содержимое страницы, требующей аутентификации пользователя?" или они видят только поле реферера заголовка, из которого был загружен файл JavaScript AdSense.

2 ответа

Решение

Они вернулись ко мне после ручной проверки моего сайта и сказали, что на самом деле не было никакой утечки информации о пользователе. Ну и дела, спасибо за автоматизированные системы обнаружения Facebook!

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

Почему бы вам не настроить прокси-сервер, такой как squid, а затем указать свой браузер, чтобы просмотреть свой экземпляр squid для всего доступа по http. Затем вы можете просмотреть журналы squid для всех http-запросов и заголовков, чтобы узнать, что может быть утечка?

Я бы подумал, что вам следует выбрать независимую машину для установки squid, поэтому вам может понадобиться экземпляр Amazon Micro, если у вас еще нет машины

Кроме того, весь JavaScript, работающий на странице, может видеть все в DOM и все глобальные переменные JavaScript, поэтому, если вы /Facebook обеспокоены утечкой информации таким образом, вы можете захотеть сохранить все uid внутри замыкания и / или запустить код AdSense в iframe достаточно непосредственно на странице - как правило, вы никогда не должны позволять стороннему JavaScript-коду запускаться на вашей странице без его переноса в iframe

Другие вопросы по тегам