for your account security logging into facebook from an embedded browser is disabled что делать
For your account security logging into facebook from an embedded browser is disabled что делать
I am building a hybrid app that is just using the share dialogs for Android and iOS.
iOS is working great and Android is also working great IF the facebook app is installed. On this emulator, it is not and I get an error when I try to log in to use the share dialog.
«For your account security, logging into Facebook from an embedded browser is disabled»
I am using SDK version 9. I am using a relatively old simulator to make sure we have good compatibility. I have enabled embedded logins from our business app dashboard. Can anyone tell me what’s going on here and how to allow it?
To be clear, it is definitely opening an embedded browser to do the login. I just have no idea why it would be blocking the login
Using a facebook generated user worked
Can you share what did you do to allow the user to login? I’m getting the same error
I just got a test user from facebook in the business dashboard. I still don’t have it working with a real user
have the same problem. Any progress?
I got the same issue, but not happened on every device, from now on, iphone8 ios14.6 is blocked from facebook embed login on app webview
I am having the same issue but not with devices, with accounts. Some accounts are blocked while others work on same device.
We’ve received many reports from users experiencing this issue, and I can consistently reproduce this with my personal Instagram account, linked to my personal Facebook account.
Android Facebook Share Dialog Blocks Login Due To Embedded Browser
I am using the cordova-plugin-facebook-connect plugin to launch the share dialogs from Facebook. iOS is working great, and Android is working great when the app is installed.
On Android, if the app is not installed, it tries to share with an embedded web browser. After entering my email and password, I get an error saying that logging into Facebook from an embedded browser is disabled. I am using the latest version of the plugin, which SHOULD mean the latest Facebook Android SDK
I have found nothing on the Facebook docs and I haven’t gotten an answer from the Facebook developer community.
If the app is installed, it is all good. Without the app, it uses the embedded browser, but Facebook is blocking the login. I would love to know WHY and how to enable it.
UPDATE: Using a Facebook generated test user worked
6 Answers 6
Facebook has let everyone know that they are deprecating support for FB Login on Android embedded browsers:
As of right now, they are blocking High Risk users with this error and will block everyone starting in August. Their suggestion is to use a later version of the SDK (8.2+) to avoid this
I can’t comment (yet) so I’m creating this answer to ask you if you could try and remove all (!) local browser data, i.e. Cookies and local storage, etc. This is the first thing that came to my mind when I read «works with another login».
Try installing another browser, like Firefox, and set this the default browser, then login again with your Facebook credentials. It worked to me. I guess the problem is with chrome. For me, it worked when I set Firefox my default browser.
The issue is resolved if the user has enabled 2-factor authentication via facebook. I have tested this with multiple real users now and for example enabling sms-2fa does enable the user to login into apps with an embedded browser. The login happens as usual if the user has the facebook app installed on the same device and already logged in on the facebook app with 2fa. Otherwise, facebook will request the 2fa when logging in but a login is possible again.
I have however found out that some apps seem to crash if they had been opened before 2fa had been activated on a phone with a facebook app and those apps need to restarted before trying to login on them again.
From this we can assume facebook blocks out embedded browsers due to their risk assessment. 2fa is specifically presented as an option to login via unsafe browsers within the security options of each user individually and sadly does not seem to be an issue on the side of who ever is using an embedded browser within their app.
Безопасность входа
Такие функции, как маркеры доступа и разрешения, делают вход через Facebook надежным и безопасным инструментом для людей и приложений. Однако в приложениях при этом необходимо реализовать дополнительные меры безопасности.
Видео
Джонатан Гросс и Брент Дорман на конференции F8 2015 рассказали о способах повышения безопасности при интеграции входа через Facebook.
Проверка безопасности
Ниже перечислены меры безопасности, которые необходимо реализовать во всех приложениях, где используется вход через Facebook. Их можно дополнить другими функциями, чтобы обеспечить максимальную защиту приложения. Без обеспечения должных мер безопасности люди могут потерять доверие к вашему приложению и перестать пользоваться им.
Секрет приложения
С помощью секрета приложения некоторые процессы входа создают маркеры доступа. Секрет приложения гарантирует, что приложение защищено и доступно только доверенному пользователю. Секрет позволяет без труда создать маркер доступа приложения, который позволяет отправлять запросы API от лица пользователя. Поэтому очень важно защитить секрет приложения от взлома.
Секрет или маркер доступа приложения ни в коем случае нельзя указывать в коде, который может быть доступен кому-то, кроме разработчика приложения. Это правило относится ко всем небезопасным методам использования кода, таким как клиентский код (например, HTML или JavaScript) или нативные приложения, которые можно декомпилировать (в частности, приложения для iOS, Android или компьютеров на базе Windows).
Если секрет приложения взломан, его нужно немедленно сбросить. Это можно сделать в базовых настройках панели приложений. В начале процесса сброса вы можете указать, сколько времени (в часах) ещё будет действовать взломанный секрет при отправке запросов. Однако при отправке данных с Facebook (например, подписанных запросов) уже будет использоваться новый секрет приложения. Поэтому постарайтесь как можно скорее исправить код.
Безопасные вызовы с сервера с параметром appsecret_proof
Безопасные вызовы с клиента с использованием краткосрочных маркеров и кода
Некоторые конфигурации приложений используют маркеры длительного действия на нескольких клиентах. Мы рекомендуем использовать только краткосрочные маркеры, которые создаются с помощью кода. Подробнее об этом см. в документации по маркерам доступа.
Перехват маркеров
Предположим, у нас есть нативное приложение iOS, которое отправляет вызовы API, но делает это не напрямую, а через сервер, принадлежащий тому же приложению, и передает этому серверу маркер, созданный с помощью SDK для iOS. После этого сервер будет использовать этот маркер для вызовов API.
Конечную точку, с помощью которой сервер получает маркер, могут взломать, и злоумышленник может передать серверу маркеры доступа другого приложения. Безопасность будет нарушена. Но защититься от этого несложно: вместо того чтобы верить, что маркеры доступа получены от соответствующего приложения, обязательно проверяйте их, используя конечные точки отладки.
Регулярная проверка действительности маркеров доступа
Если вы не используете Facebook SDK, регулярно проверяйте, действителен ли маркер доступа. Хотя маркеры доступа имеют определенный срок действия, он может истекать преждевременно из соображений безопасности. Если в приложении не используется Facebook SDK, крайне важно вручную реализовать регулярную проверку действительности маркеров (по крайней мере раз в день). Так вы избежите использования маркеров с истекшим сроком действия.
Параметр state
Если вы используете на своем сайте диалог входа через Facebook, параметр state представляет собой уникальную строку, которая защищает приложение от подделки межсайтовых запросов.
Включение строгого режима
Строгий режим не позволяет злоумышленникам перехватывать ваше перенаправление. Включение строгого режима обязательно для всех приложений.
Прежде чем включать строгий режим в панели приложений, убедитесь, что ваш нынешний трафик перенаправления ещё работает. Для этого выполните следующие действия в настройках входа через Facebook:
Для приложений с URI динамического перенаправления используйте параметр state, чтобы передать динамическую информацию обратно на ограниченное количество URI перенаправления. Затем добавьте каждый из этих URI перенаправления в список действительных URI для перенаправления OAuth.
Для приложений с ограниченным количеством URI перенаправления каждый такой URI нужно добавить в список действительных URI для перенаправления OAuth.
После выполнения этих действий включите строгий режим.
Как работает строгий режим?
Строгий режим требует, чтобы URI точно соответствовали списку действительных URI для перенаправления OAuth, что предотвращает перехват URI переадресации. Например, если в списке есть адрес www.example.com, в строгом режиме не будет выполняться перенаправление по адресу www.example.com/token. Кроме того, запрещаются все дополнительные параметры запроса, которых нет в списке действительных URI для перенаправления OAuth.
Использование протокола HTTPS
Используйте вместо HTTP протокол HTTPS, так как он обеспечивает шифрование. HTTPS гарантирует конфиденциальность данных при передаче и предотвращает несанкционированный доступ к ним. Кроме того, этот протокол не позволяет подделать данные при передаче (например, добавить в них рекламу или вредоносный код).
С 6 октября 2018 г. все приложения должны использовать протокол HTTPS.
Активация SDK for JavaScript для входа через Facebook
Укажите, что вы используете SDK for JavaScript для входа, активировав переключатель Вход с помощью SDK for JavaScript. Затем добавьте домен страницы, на которой установлен SDK, в список Разрешенные домены SDK for JavaScript. Так маркеры доступа будут возвращаться обратным вызовам только на авторизованных доменах. Для аутентификации с помощью SDK for JavaScript поддерживаются только страницы, адрес которых начинается с https.
Если вы интегрировали SDK for JavaScript до 10 августа 2021 года, этот список заполняется значениями в соответствии с текущим использованием. Дополнительные действия не требуются.
Если вы выполнили интеграцию после 10 августа 2021 года, в этот список нужно добавить значения.
Принципы проверки URI перенаправления
Когда злоумышленник добавляет в запрос на вход несанкционированный параметр redirect_uri, происходит открытое перенаправление. Оно может привести к потенциальной утечке конфиденциальной информации, например утечке маркера доступа через строку запроса или фрагмента URI перенаправления.
Чтобы защитить пользовательские интеграции от подобных угроз, указывайте авторизованные URI перенаправления в настройках приложения. При выполнении запроса на вход мы проверим, соответствует ли параметр redirect_uri сведениям в соответствующем списке. Полный URI, а также все его параметры должны полностью совпадать. Исключение составляет необязательный параметр состояния — его значение не учитывается.
Браузеры в приложении и SDK for JavaScript
Как правило, для выполнения входа SDK for JavaScript использует всплывающие уведомления и обратные вызовы. Если браузер в приложении блокирует всплывающие уведомления, выполнить вход не удастся. В таких случаях SDK автоматически попытается выполнить перенаправление с маркером доступа на страницу, которая его вызвала. SDK удастся выполнить безопасное перенаправление, только если в поле «Действительные URI перенаправления для OAuth» указан полный URI страницы.
Если для вашего веб-приложения важны сценарии с использованием браузера в приложении, добавьте домен страницы входа в список разрешенных доменов и внесите полный URI (включая путь и параметры запроса) в список разрешенных URI перенаправления. Если у вашего приложения множество вариантов URI входа, можно вручную указать параметр fallback_redirect_uri для вызова FB.login(). В этом случае вам потребуется добавить в список разрешенных URI перенаправления только эти данные.
Ограничение доступа к настройкам приложения Facebook
Включите и (или) отключите все неиспользуемые процессы аутентификации, чтобы свести к минимуму уязвимость приложения.
Используйте в клиентах краткосрочные маркеры доступа, созданные с помощью кода, а не маркеры, сгенерированные клиентом или предоставленные сервером маркеры доступа длительного действия. При использовании краткосрочных маркеров доступа, сгенерированных с помощью кода, сервер приложения обменивает код на маркер. Это гораздо безопаснее, чем получение маркера в браузере. Из соображений безопасности рекомендуется везде использовать маркеры, полученные в обмен на код (если это возможно). Тогда вредоносное ПО на компьютере пользователя не сможет получить маркер доступа и использовать его в ненадлежащих целях. Подробнее см. в нашей документации по маркерам доступа.
Отключите механизм авторизации Client OAuth Login, если ваше приложение его не использует. Client OAuth Login — это глобальный переключатель, позволяющий включать и отключать маркеры клиента OAuth. Если приложение не использует клиентские процессы OAuth, в том числе SDK для входа через Facebook, их следует отключить. Однако не забывайте, что при отключенной функции Client OAuth Login нельзя запросить разрешения для маркера доступа. Эта настройка находится на панели приложений в разделе Продукты > Вход через Facebook > Настройки.
Отключите веб-процессы OAuth или задайте список разрешенных URL для перенаправления. Настройки веб-авторизации OAuth позволяют любому маркеру клиента OAuth, использующему веб-диалог входа через Facebook, возвращать маркеры вашему сайту. Эта настройка доступна в разделе панели приложений Продукты > Вход через Facebook > Настройки. Отключите ее, если вы не разрабатываете пользовательский веб-процесс входа и не используете вход через Facebook из SDK в Интернете.
Используйте протокол HTTPS. Для этой настройки необходимо использовать протокол HTTPS для перенаправления OAuth, а все вызовы SDK Facebook for JavaScript, возвращающие маркер доступа или требующие его, должны выполняться только со страниц с включенным HTTPS. Эта настройка по умолчанию включена для всех приложений, созданных начиная с марта 2018 г. Кроме того, к 6 октября 2018 г. необходимо перенастроить все существующие приложения так, чтобы они использовали только URL HTTPS. Большинство популярных облачных платформ хостинга приложений позволяет бесплатно и автоматически настраивать сертификаты TLS для приложений. Если вы разместили приложение на своем хостинге или ваша платформа хостинга не предлагает использовать HTTPS по умолчанию, вы можете получить для своих доменов бесплатный сертификат с помощью службы Let’s Encrypt.
Отключите встроенный браузер OAuth, если приложение его не использует. Некоторые классические и мобильные нативные приложения используют для аутентификации пользователей клиентский процесс OAuth из встроенного веб-представления. Если ваше приложение этого не делает, отключите эту настройку на панели приложений в разделе Продукты > Вход через Facebook > Настройки.
Отключите процессы единого входа для мобильных устройств, если приложение их не использует. Если приложение не использует службу входа iOS или Android, отключите настройку «Единый вход» в разделах iOS и Android меню Настройки > Основное.
В панели приложений есть несколько дополнительных настроек, которые позволяют разработчикам защитить приложение от угроз безопасности:
Facebook blocking login inside InAppWebView on iOS #916
Comments
blastmasta commented Jul 15, 2021
Environment
| Technology | Version |
|---|---|
| Flutter version | 1.22.6 |
| Plugin version | 4.0.0+4 |
| Android version | — |
| iOS version | 14.6 |
| Xcode version | 12.5 |
Description
We are using the Flutter InAppWebView Plugin for user registration flow and we have a step where users have to sign in to their Facebook account for an Instagram connection.
Recently we Facebook published a blog post that they are deprecating support for FB Login authentication on Android embedded browsers, but some users, including us, experienced the issue with sign-in into Facebook inside WebViews on iOS.
Expected behavior:
Users have to be able to log into their Facebook account inside InAppWebView.
Current behavior:
When users tries to login into Facebook they are getting error:
«For your account security, logging into Facebook from an embedded browser is disabled».
The text was updated successfully, but these errors were encountered:
github-actions bot commented Jul 15, 2021
NOTE: This comment is auto-generated.
Are you sure you have already searched for the same problem?
Some people open new issues but they didn’t search for something similar or for the same issue. Please, search for it using the GitHub issue search box or on the official inappwebview.dev website, or, also, using Google, StackOverflow, etc. before posting a new one. You may already find an answer to your problem!
If this is really a new issue, then thank you for raising it. I will investigate it and get back to you as soon as possible. Please, make sure you have given me as much context as possible! Also, if you didn’t already, post a code example that can replicate this issue.
In the meantime, you can already search for some possible solutions online! Because this plugin uses native WebView, you can search online for the same issue adding android WebView [MY ERROR HERE] or ios WKWebView [MY ERROR HERE] keywords.
Following these steps can save you, me, and other people a lot of time, thanks!
How does Facebook disable the browser’s integrated Developer Tools?
So apparently because of the recent scams, the developer tools is exploited by people to post spam and even used to «hack» accounts. Facebook has blocked the developer tools, and I can’t even use the console.
How did they do that?? One Stack Overflow post claimed that it is not possible, but Facebook has proven them wrong.
Just go to Facebook and open up the developer tools, type one character into the console, and this warning pops up. No matter what you put in, it will not get executed.
How is this possible?
They even blocked auto-complete in the console:
13 Answers 13
I’m a security engineer at Facebook and this is my fault. We’re testing this for some users to see if it can slow down some attacks where users are tricked into pasting (malicious) JavaScript code into the browser console.
Just to be clear: trying to block hackers client-side is a bad idea in general; this is to protect against a specific social engineering attack.
If you ended up in the test group and are annoyed by this, sorry. I tried to make the old opt-out page (now help page) as simple as possible while still being scary enough to stop at least some of the victims.
The actual code is pretty similar to @joeldixon66’s link; ours is a little more complicated for no good reason.
Chrome wraps all console code in
. so the site redefines console._commandLineAPI to throw:
This is not quite enough (try it!), but that’s the main trick.
Epilogue: The Chrome team decided that defeating the console from user-side JS was a bug and fixed the issue, rendering this technique invalid. Afterwards, additional protection was added to protect users from self-xss.
I located the Facebook’s console buster script using Chrome developer tools. Here is the script with minor changes for readability. I have removed the bits that I could not understand:
With this, the console auto-complete fails silently while statements typed in console will fail to execute (the exception will be logged).
I couldn’t get it to trigger that on any page. A more robust version of this would do it:
Edit:
Chrome has fixed this in a past release. — which must have been before February 2015, as I created the gist at that time
So here’s another possibility. This time we hook in, a level above, directly into InjectedScript rather than InjectedScriptHost as opposed to the prior version.
Which is kind of nice, as you can directly monkey patch InjectedScript._evaluateAndWrap instead of having to rely on InjectedScriptHost.evaluate as that gives you more fine-grained control over what should happen.
Another pretty interesting thing is, that we can intercept the internal result when an expression is evaluated and return that to the user instead of the normal behavior.
Here is the code, that does exactly that, return the internal result when a user evaluates something in the console.
It’s a bit verbose, but I thought I put some comments into it
So normally, if a user, for example, evaluates [1,2,3,4] you’d expect the following output:
After monkeypatching InjectedScript._evaluateAndWrap evaluating the very same expression, gives the following output:
As you see the little-left arrow, indicating output, is still there, but this time we get an object. Where the result of the expression, the array [1,2,3,4] is represented as an object with all its properties described.
I recommend trying to evaluate this and that expression, including those that generate errors. It’s quite interesting.
Of course, you could intercept all that information and still return the original result to the user.
This is the prior version which was fixed by Google. Hence not a possible way anymore.
One of it is hooking into Function.prototype.call
Chrome evaluates the entered expression by call ing its eval function with InjectedScriptHost as thisArg
var result = evalFunction.call(object, expression);
Given this, you can listen for the thisArg of call being evaluate and get a reference to the first argument ( InjectedScriptHost )
You could e.g. throw an error, that the evaluation was rejected.
Here is an example where the entered expression gets passed to a CoffeeScript compiler before passing it to the evaluate function.





















