Подглядываем за пользователем через In-App на iOS

Эта неделя выдалась очень жаркой в Купертино. Сегодня в костер добавили керосина.

Один из разработчиков твиттер клиента для iOS — Крейг Хоккенбери — опубликовал концепт простенького приложения с возможностью открытия in-app браузера и слежением за вводом данных в любые поля.



Пояснение к видео от Крейга:

— Верхняя часть экрана — это не веб страница, а часть приложения. Полученную информацию можно спокойно отсылать на удаленный сервер.
— Это не фишинг, пользователь видит тот сайт, который запрашивал. В нашем случае — это твиттер.
— Владелец сайт ничего не может предпринять никаких действий для защиты. Весь javascript подчинен web view, в котором открыт сайт.
— Кнопки на сайте переименованы с «Sign in» в «SUCK IT UP». Я считаю, это подходит в данной ситуации.
— Проверено на iOS 7 — 8. Возможно и на более ранних версиях.
Поделиться публикацией

Комментарии 34

    0
    Я не пользуюсь iOS, начал гуглить на тему In-App и ничего толкового не нашел. Можете вкратце пояснить суть данной технологии?
    P.s Знаю что писать нужно в личку, но сделайте что-то с «Владелец сайт ничего не может предпринять никаких действий для защиты»
      +5
      Смысл в том, что в iOS есть такой компонент WebView, который приложения используют, чтобы отображать сайты (например, когда вам присылают ссылку вконтакте и вы кликаете на ней в соответствующем приложение на телефоне, ссылка откроется в WebView в этом приложение, но там есть пункт меню, позволяющий открыть ее — ссылку — в safari). Ну так вот, статья о том, что пользователи не должны доверять сайтам открытым в приложениях, ведь приложение имеет доступ к данным, вводимым на этом сайте. (Сафари видимо тоже имеет доступ к данным вводимым на сайтах, но сафари можно доверять)
        +3
        Я так понимаю, что сторонний сайт открывается в приложении через UIWebView, и оно может следить за активностью юзера. Что он открыл на этом сайте, какие логины\пароли куда вводил.

        Для параноиков — страшная вещь! Для всех остальных, как мне кажется, угроза примерно на уровне использования непроверенных плагинов к настольному браузеру. Там точно так же через javascript можно контролировать и подменять содержимое страницы.
          +1
          >Для всех остальных, как мне кажется, угроза примерно на уровне использования непроверенных плагинов к настольному браузеру

          Так, чисто интересно:
          1. Сколько плагинов к браузеру (по вашему мнению) устанавливает среднестатистический пользователь?
          2. Сколько мобильных приложений (по вашему мнению) устанавливает среднестатистический пользователь?
            +1
            1. Немного, наверное. Но к ним можно прибавить еще тонну всякого барахла на компьютере, которое может делать что угодно с админскими правами.
            2. Наверное, больше чем плагинов к браузеру. Но тут стоит еще учесть модерацию приложений, удаление из магазина, блокировку аккаунтов разработчиков и отсутствие админского доступа к системе.

            Думаю, что телефон на iOS для обычного среднестатистического пользователя по прежнему более безопасен, чем домашний компьютер. Ну и Apple, наверняка, что-нибудь еще придумает.
              +1
              Ну, «тонну барахла на компьютере» всё же давайте не будем приплетать, речь шла немного не о том.

              1. «Немного» — это вы как-то скромничаете :) Думаю, не ошибусь, если скажу, что количество таких плагинов можно пересчитать по пальцам. Причем одной руки. Причем набор этих плагинов со временем не меняется.
              2. Что касается мобильных приложений, то подсчитали, что средний пользователь в среднем использует около 26 приложений за месяц. Причем набор используемых приложений периодически меняется. Соответственно, с течением времени счёт приложениям, когда-либо использовавшимся, идёт уже на сотни.

              >Но тут стоит еще учесть модерацию приложений, удаление из магазина, блокировку аккаунтов разработчиков и отсутствие админского доступа к системе.

              Вернитесь, пожалуйста, и перечитайте топик. Нужен ли админский доступ для кражи пароля? Не нужен. Блокировка аккаунта? Ну и фиг с ней: базу паролей к твиттеру/фейсбуку/почте/чему угодно уже собрали, аккаунт можно и выкинуть. И завтра же зарегистрировать новый. Цена вопроса — $100.

              >Думаю, что телефон на iOS для обычного среднестатистического пользователя по прежнему более безопасен, чем домашний компьютер

              Ну да, ну да
                0
                Я же говорю
                Для параноиков — страшная вещь!
                Лично я вспомнил ровно одно приложение, в котором авторизировался через браузер — и там использовался Safari.

                В любом случае, как скажет Apple — так и будет.

                P.S. «Тонна барахла», через которую утекает океан личной информации, в любом случае есть. Неважно, приплетаю я её или нет.
                  +1
                  То есть любой человек, беспокоящийся о сохранности своих личных данных, нынче у нас уже приравнивается к параноику? Фигасе новости…

                  >Лично я вспомнил ровно одно приложение, в котором авторизировался через браузер — и там использовался Safari.

                  Лично я использую от силы десяток приложений, причем одних и тех же на протяжении многих месяцев. Это опровергает статистику, которую я привёл выше? Нет. Намёк понятен?

                  >В любом случае, как скажет Apple — так и будет.

                  Это без сомнения. Проблема в том, что далеко не всегда то, что говорит Эппл — правильно.
      • НЛО прилетело и опубликовало эту надпись здесь
          +14
          Это не брешь, так изначально спроектировано. Вы через приложение просматриваете сайт, естественно оно имеет к нему доступ. UIWebView или нет — роли не играет, можно же написать и свой парсер html. Так работают приложения в любой ОС, мобильной или десктопной, причём здесь именно iOS?
          p.s. Браузер это тоже приложение.
          • НЛО прилетело и опубликовало эту надпись здесь
            +1
            Как?

            1. Запретить javascript в UIWebView?
            2. Отключить UIWebView и открывать всё в родном Safari?

            Других решений я не вижу.
            • НЛО прилетело и опубликовало эту надпись здесь
                +2
                Там и так не очень то много методов доступно.

                Выходит, что нужно запретить выполнение произвольного javascript.
                • НЛО прилетело и опубликовало эту надпись здесь
                    +2
                    Ну например приложение ластпасс открывает там сайт и заполняет пароли. Без JS это было бы проблематично.
                    Это белки истерички. А еще можно ввести данные кредитки и потратить с нее все деньги. Вот так дыра.
                      0
                      Например я скрываю NavigationBar при прокрутке страницы, а для этого нужно знать, что пользователь её прокрутил и до какого места.
                      Также приложения могут подсвечивать номера телефонов, ссылки и обрабатывать клики по ним.

                      Необходимость в произвольном вывозе javascript со стороны приложения на веб-странице я вот сейчас не могу обосновать, но сама возможность меня, как юного разработчика, греет.

                      И почему до этого (топик) додумались только сейчас
                      Я не пробовал это делать, но, наверное, не так уж это и просто, раз раньше не додумались. Не знаю, в общем.
                        0
                        Все, что касается прокрутки, делается через scrollView, которую webView выдает наружу. Так что изоляция веб-содержимого на этот функционал не повлияет.
                        +11
                        Это Крейг додумался только сейчас. Имхо это очевидная вещь для любого iOS-разработчика.
                      +2
                      Веб вью дофига где используется, в т.ч. и просто как рич-текст контейнер. Убить веб вью значит убить достаточно большой процент приложений в принципе.
                      0
                      Защититься можно двухфакторной авторизацией и одноразовыми паролями, а глобально — запретом межсайтовой аутентификации, т.е. чтобы даже не было смысла в каком-нибудь ином приложении вводить ваш пароль. Но владельцы на это не пойдут, так как это чуть ли не основа нынешнего Веба.
                        +1
                        Отключить UIWebView и открывать всё в родном Safari?

                        К слову сказать, товарищ на днях получил режект за то, что для Facebook-авторизации открывалось Safari, а не использовался UIWebView (стандартное поведение Facebook SDK). Причина режекта — «10.6. Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. If your user interface is complex or less than very good, it may be rejected».
                        +3
                        Не представляю, как это вообще можно пофиксить, т.к. если не доверяешь приложению, то оно может открывать вполне реальный фишинговый сайт или мимикрировать под веб страницу вообще без использования веб вью.
                        Т.е. с таким же результатом можно сделать приложение под любую мобильную ось. Именно поэтому нужно подключать твиттер на уровне iOS, если приспичило, и никогда не вбивать пароль из экрана приложения.
                        +9
                        Не баг, а фича, многие приложения построены, на том что имеют полный доступ к содержимому UIWebView.
                          +1
                          Как выше было сказано — это не баг, а фича. С помощью этого «бага» работает API Phonegap и аналогов Phonegap/Cordova. Это поведение позволяет приложению «слушать» JS события и вызывать нативные элементы ОС (например: pop-up modals, device location, file transfer)
                            +4
                            На андроиде так же. Везде так.
                              +3
                              Заголовок немного вводит в заблуждение словом InApp — не хватает слово браузер.
                                +2
                                Заголовок совершенно misleading: под «in-app» обычно подразумеваются in-app purchases
                                  +3
                                  Да, приложение может напарить пользователя как угодно, вот ведь новость. А если я покажу не webView я просто картинку такую же как на сайте, поля добавлю и буду логин и пароль у пользователя выуживать, это тоже будет брешь в безопасности iOS? Ну бред же!
                                    0
                                    А ещё можно сделать произвольный сайт, и прямо на нем добавить форму логина, как у Facebook и, о ужас, можно собирать данные, которые вводит пользователь. Работает в любом браузере!
                                    0
                                    Какой простор для аналитики! :)
                                      0
                                      Дело в том, что можно записать видео, как пользователь вводит данные в веб-вью, отыкрытым в приложение, и без всяких javascript, как это делается в AppSee (http://www.appsee.com/ ) например. Причем приложения с тем же интегрированным AppSee попадают в AppStore.
                                        0
                                        Причем приложения с тем же интегрированным AppSee попадают в AppStore

                                        Прям стабильно все попадают? Или просто пока везло :)
                                        У вас есть личный опыт или пруф?
                                        Я немного смутно себе предоставляю, как они могут добывать всю эту расчудесную информацию не используя приватные методы.
                                          0
                                          Не знаю как стабильно ли, но одно точно попало, пруф естественно не предоставлю, я задавал вопрос на dev-форуме, но мне ничего пока не ответили.

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое