Как часто вы задумываетесь о безопасности установленных приложений? Казалось бы — это же всего лишь небольшая программа, установленная на вашем смартфоне, абсолютно безобидная, и она совершенно точно не может убить кого-то.
Это вы здесь беспокоитесь о безопасности ваших данных, о безопасности данных пользователей ваших приложений. А обычный юзер понятия не имеет, что можно сделать с его смартфоном, если какой-то неблагонадежный гражданин получит к нему доступ и у него будет достаточно желания и фантазии повеселиться со всем этим.
Вы знаете, большинство людей до сих пор думают что хакеры смотрят на летящие зеленые цифры в мониторе. А еще они думают, что это брутальные аутисты, которые взламывают банки попивая смузи на Бали. И я абсолютно серьезна. Как-то, когда как раз выстрелил биткоин, я встретилась со своей давней знакомой, она, к слову, врач, умная девочка. Она знает, что я программист и работаю в защите и она на полном серьезе спросила меня: как я понимаю эти летящие цифры? И объяснить ей даже что такое for в принципе на данном этапе просто нереально, поэтому я просто перевела тему. Думаю, сейчас люди уже больше понимают, что такое программирование, чем буквально года два назад, потому что оно заполоняет все сферы с бешеной скоростью.
Но вернемся к тому разговору. Меня обрадовало, что она стала консультироваться у меня по поводу информационной безопасности. Конечно, она не знает что это конкретно такое, но она задавала довольно интересные вопросы. Почему у меня начинает нагреваться и тупить смартфон, когда я разгадываю судоку, пока еду в метро? Это же всего лишь судоку, даже она понимает, что телефон не должен сходить с ума во время такой незатейливой игры.
Вы здесь вроде умные ребята, как вы думаете, почему примитивное судоку с топорным UI грело ей телефон так, что пальцы можно было обжечь?
Вот именно, судоку то майнило. И самое забавное, вполне законно. Это как раз о том, что следует внимательнее читать пользовательское соглашение. При установке этой игрушки автор спрашивал, хочет ли пользователь смотреть рекламу или позволит майнить на своем устройстве. А кто вообще будет скроллить этот скучный текст, а еще ведь и прочесть его надо, и люди просто тыкают “Да-да-да”, отстань, ведь они хотят скорее добраться до контента. Не важно какими путями. И эта тенденция не устарела и ай-яй-яй-разработчики будут эксплуатировать ее еще долгое время. Всем добра:)
Это вы здесь беспокоитесь о безопасности ваших данных, о безопасности данных пользователей ваших приложений. А обычный юзер понятия не имеет, что можно сделать с его смартфоном, если какой-то неблагонадежный гражданин получит к нему доступ и у него будет достаточно желания и фантазии повеселиться со всем этим.
Вы знаете, большинство людей до сих пор думают что хакеры смотрят на летящие зеленые цифры в мониторе. А еще они думают, что это брутальные аутисты, которые взламывают банки попивая смузи на Бали. И я абсолютно серьезна. Как-то, когда как раз выстрелил биткоин, я встретилась со своей давней знакомой, она, к слову, врач, умная девочка. Она знает, что я программист и работаю в защите и она на полном серьезе спросила меня: как я понимаю эти летящие цифры? И объяснить ей даже что такое for в принципе на данном этапе просто нереально, поэтому я просто перевела тему. Думаю, сейчас люди уже больше понимают, что такое программирование, чем буквально года два назад, потому что оно заполоняет все сферы с бешеной скоростью.
Но вернемся к тому разговору. Меня обрадовало, что она стала консультироваться у меня по поводу информационной безопасности. Конечно, она не знает что это конкретно такое, но она задавала довольно интересные вопросы. Почему у меня начинает нагреваться и тупить смартфон, когда я разгадываю судоку, пока еду в метро? Это же всего лишь судоку, даже она понимает, что телефон не должен сходить с ума во время такой незатейливой игры.
Вы здесь вроде умные ребята, как вы думаете, почему примитивное судоку с топорным UI грело ей телефон так, что пальцы можно было обжечь?
Вот именно, судоку то майнило. И самое забавное, вполне законно. Это как раз о том, что следует внимательнее читать пользовательское соглашение. При установке этой игрушки автор спрашивал, хочет ли пользователь смотреть рекламу или позволит майнить на своем устройстве. А кто вообще будет скроллить этот скучный текст, а еще ведь и прочесть его надо, и люди просто тыкают “Да-да-да”, отстань, ведь они хотят скорее добраться до контента. Не важно какими путями. И эта тенденция не устарела и ай-яй-яй-разработчики будут эксплуатировать ее еще долгое время. Всем добра:)
#shkryaba
Я спрашивала вас, интересно ли вам узнать, как работает Android более подробно. И, наконец, добила статью с описанием работы одного из самых главных компонентов системы - SystemUI.
Я спрашивала вас, интересно ли вам узнать, как работает Android более подробно. И, наконец, добила статью с описанием работы одного из самых главных компонентов системы - SystemUI.
Хабр
Как работает SystemUI в Android
В этой статье я разберу архитектуру и принцип работы основного приложения Android — SystemUI. Меня заинтересовала эта тема, потому что мне интересно, как устро...
Уже давно лежат тезисы для статьи как сделать приложение безопаснее. Но все не могу собраться с мыслями и написать полноценный текст. После последней публикации меня уже несколько раз попросили дать рекомендации, потому закидываю это сюда. Я обязательно в будущем разберу все это более подробнее, но пока так:)
1. Стратегия запутывания (запутать код с кодом на китайском языке к примеру). Это делается с помощью proguard
2. Предотвращение захвата экрана приложения. А еще можно определять всяки впны и прокси типа
System.getProperty("http.proxyHost");
System.getProperty("http.proxyPort");
3. Не позволять приложению работать с Hook
4. Запретить отладку (тут все просто, нужно чтобы процесс отслеживался родительским процессом. то есть если родительский процесс всегда должен отслеживать дочерний процесс. Присоединение процесса происходит единожды, если же нет - то значит кто-то дебажит) ну и debuggable = false конечно же нужно поставить и android.os.Debug.isDebuggerConnected() проверить
5. Проверить порт. По умолчанию ида к примеру юзает один и тот же порт. Так что мы можем посмотреть использование tcp порта устройства
6. TracerPid проверить
7. Защита подписи приложения
8. NDK как интрумент не только повышения производительности, но и улучшения безопасности
1. Стратегия запутывания (запутать код с кодом на китайском языке к примеру). Это делается с помощью proguard
2. Предотвращение захвата экрана приложения. А еще можно определять всяки впны и прокси типа
System.getProperty("http.proxyHost");
System.getProperty("http.proxyPort");
3. Не позволять приложению работать с Hook
4. Запретить отладку (тут все просто, нужно чтобы процесс отслеживался родительским процессом. то есть если родительский процесс всегда должен отслеживать дочерний процесс. Присоединение процесса происходит единожды, если же нет - то значит кто-то дебажит) ну и debuggable = false конечно же нужно поставить и android.os.Debug.isDebuggerConnected() проверить
5. Проверить порт. По умолчанию ида к примеру юзает один и тот же порт. Так что мы можем посмотреть использование tcp порта устройства
6. TracerPid проверить
7. Защита подписи приложения
8. NDK как интрумент не только повышения производительности, но и улучшения безопасности
Сегодня поговорим о стандартной безопасности клиент-серверных приложений, которые получают свои json-чики и парсят их во view. Итак, что мы можем сделать чтобы защитить свое клиент-серверное приложение?
Вообще здесь всего два пункта, на которые следует обратить внимание:
1. Идентификация и проверка пользователя как на клиенте, так и на сервере.
Идентификация пользователя включает в себя сбор данных безопасности с использованием клиентского программного обеспечения и предоставление этих данных серверу. Данные безопасности - это идентификатор пользователя, пароль и, необязательно, маркер безопасности.
2. Предотвращение несанкционированного доступа к приложению или его функциям.
После того, как пользователь идентифицирован на клиенте и сервере, права доступа этого пользователя должны быть определены, а приложение защищено в самом приложении. Обеспечение транзакции и ее функций является ответственностью разработчика приложений.
Конечно, я говорю это так что вот, смотрите, если вы будете следовать этим двум пунктам, то вы будете в безопасности. Классно то как!
Конечно же нет. Вы будете обмениваться токенами с сервером, токен вам придется где-то хранить, вы можете шифровать все это перешифровать, но в итоге, если появится человек, достаточно заинтересованный во взломе конкретно вашего приложения. Он вытащит из него все. Вы можете только максимально усложнить ему задачу. Это как с двумя дверьми. Первая выглядит вполне себе миленько, но когда злоумышленник вскрывает ее, его встречает бронебой и он такой: неее, пожалуй я залезу к твоему соседу Пете...
Полезный ресурс для защиты вашего клиент-серверного приложения
Вообще здесь всего два пункта, на которые следует обратить внимание:
1. Идентификация и проверка пользователя как на клиенте, так и на сервере.
Идентификация пользователя включает в себя сбор данных безопасности с использованием клиентского программного обеспечения и предоставление этих данных серверу. Данные безопасности - это идентификатор пользователя, пароль и, необязательно, маркер безопасности.
2. Предотвращение несанкционированного доступа к приложению или его функциям.
После того, как пользователь идентифицирован на клиенте и сервере, права доступа этого пользователя должны быть определены, а приложение защищено в самом приложении. Обеспечение транзакции и ее функций является ответственностью разработчика приложений.
Конечно, я говорю это так что вот, смотрите, если вы будете следовать этим двум пунктам, то вы будете в безопасности. Классно то как!
Конечно же нет. Вы будете обмениваться токенами с сервером, токен вам придется где-то хранить, вы можете шифровать все это перешифровать, но в итоге, если появится человек, достаточно заинтересованный во взломе конкретно вашего приложения. Он вытащит из него все. Вы можете только максимально усложнить ему задачу. Это как с двумя дверьми. Первая выглядит вполне себе миленько, но когда злоумышленник вскрывает ее, его встречает бронебой и он такой: неее, пожалуй я залезу к твоему соседу Пете...
Полезный ресурс для защиты вашего клиент-серверного приложения
Nsoftware
SecureBlackbox 16: Securing Your Client-Server or Multi-Tier Application
Introductory article about security and encryption in distributed applications.
Думаю запилить статью о том, как работает ProGuard. Оказывается, до сих пор многие бояться даже на него смотреть и в лучшем случае пользуются его дефолтной реализацией.
#shkryaba
В этом году это будет моей последней статьей. Она уже давно у меня лежала и, надеюсь, кому-нибудь она сэкономит время. Итак, давайте погрузимся в это чудесное приключение по получению уникального идентификатора устройства. С наступающим!:)
В этом году это будет моей последней статьей. Она уже давно у меня лежала и, надеюсь, кому-нибудь она сэкономит время. Итак, давайте погрузимся в это чудесное приключение по получению уникального идентификатора устройства. С наступающим!:)
Habr
Подводные камни идентификации Android-устройства
Некоторым разработчикам может понадобится идентифицировать Android-устройства своих пользователей. Чаще всего это делается не для того чтобы распознать именно девайс, а для определения конкретной...
Этот год выдался довольно интересным. Я многому научилась, многое сделала, разные люди окружали меня, вдохновляли или, наоборот, вызывали отвращение. У меня сформировались более четкие цели на будущее и я очень рада этому, потому что когда нет конкретных целей, любые движения превращаются в мельтешение. Непонятно, что и зачем ты делаешь. Я давно хотела создать канал, но буквально несколько месяцев назад я не могла даже сформулировать, зачем он мне и как я буду его вести. Сейчас же это представление тоже до сих пор формируется. Потому на этот счет я решила спросить вас:)
Оу, ну ладно-ладно, я все поняла, только технологии, код и хардкор. Те, кто ждет бьюти блоги, вы там поосторожнее, а то от мужественности своего блога в один прекрасный момент я могу слететь с катушек и запилить сто слоев туши. Вот будет нежданчик (*^ω^*)
В 2019 ничего не изменится?
За все время я успела поработать на разных проектах, в разных компаниях, с разными людьми. Каждый мой проект значил для меня много, я приходила на него с конкретной целью и, чаще всего, уходила, когда вбирала в себя все, что он мне мог бы дать.
Есть с десяток статей о том, какие разработчики безответственные и какие менеджеры дураки. Но переходя из компании в компанию, сталкиваясь с разным ведение процессов и взаимодействием людей, начинаешь понимать, что, по факту, менеджеры вводят новые методики, разработчики вводят новые подходы, но очень редко, когда они действительно знают, что делают. Зачастую, это бывает так: мы введем agile потому что я был на конференции и там сказали что это прям классно. И не важно, что та компания занималась разработкой приложения, которое продает пиццу, а мы делаем интерфейс для беспилотника.
У разработчиков так же, все кричат Kotlin, Dagger, RxJava!! А почему бы не запихнуть все это в проект и не важно, что Dagger мы вставим по шаблонам, которые никто так до конца и не понял, а как работает многопоточность из коробки вообще видимо не важно, а если заглянуть под капот Kotlin — польются кровавые слезы (хотя в последнее время стало явно лучше).
И только в очень редких случаях можно встретить людей, которые действительно понимают, что делают. Но, как правило, начинали они все с того же, что я описала выше.
Очень сложно сделать что-то с первого раза, без какого-либо опыта, чтобы оно сразу зашло, взлетело. Люди приходят на проект, от них ждут, что они сделают его лучше, но они учатся на нем и если все идет не по плану, они легко могут просто свалить. А вы со своим проектом останетесь у разбитого корыта.
Сейчас слишком много людей, которые хотят отвечать одновременно за все и ни за что. Они хотят кричать, что это они придумали и сделали, но если что не так, то просто отстраняются. Именно потому очень ценны люди, которые могут вытащить проект с самого дна, потому что мало кто будет даже просто пытаться.
Потому, если вы думаете, что все пошло не по плану и вам хочется уйти прямо сейчас, подумайте несколько раз о том, что вам дал этот проект и что он еще мог бы дать (тут я имею в виду даже не деньги, а скорее опыт и эмоции, которые вы получаете от работы). Потому что любое приложение, софт, система — написана людьми. Это целая команда, не только разработчики, но и аналитики, менеджеры, тестировщики. И если что-то не так с командой, если что-то не так с руководством — каждый начинает это чувствовать и проект разваливается.
За все время я успела поработать на разных проектах, в разных компаниях, с разными людьми. Каждый мой проект значил для меня много, я приходила на него с конкретной целью и, чаще всего, уходила, когда вбирала в себя все, что он мне мог бы дать.
Есть с десяток статей о том, какие разработчики безответственные и какие менеджеры дураки. Но переходя из компании в компанию, сталкиваясь с разным ведение процессов и взаимодействием людей, начинаешь понимать, что, по факту, менеджеры вводят новые методики, разработчики вводят новые подходы, но очень редко, когда они действительно знают, что делают. Зачастую, это бывает так: мы введем agile потому что я был на конференции и там сказали что это прям классно. И не важно, что та компания занималась разработкой приложения, которое продает пиццу, а мы делаем интерфейс для беспилотника.
У разработчиков так же, все кричат Kotlin, Dagger, RxJava!! А почему бы не запихнуть все это в проект и не важно, что Dagger мы вставим по шаблонам, которые никто так до конца и не понял, а как работает многопоточность из коробки вообще видимо не важно, а если заглянуть под капот Kotlin — польются кровавые слезы (хотя в последнее время стало явно лучше).
И только в очень редких случаях можно встретить людей, которые действительно понимают, что делают. Но, как правило, начинали они все с того же, что я описала выше.
Очень сложно сделать что-то с первого раза, без какого-либо опыта, чтобы оно сразу зашло, взлетело. Люди приходят на проект, от них ждут, что они сделают его лучше, но они учатся на нем и если все идет не по плану, они легко могут просто свалить. А вы со своим проектом останетесь у разбитого корыта.
Сейчас слишком много людей, которые хотят отвечать одновременно за все и ни за что. Они хотят кричать, что это они придумали и сделали, но если что не так, то просто отстраняются. Именно потому очень ценны люди, которые могут вытащить проект с самого дна, потому что мало кто будет даже просто пытаться.
Потому, если вы думаете, что все пошло не по плану и вам хочется уйти прямо сейчас, подумайте несколько раз о том, что вам дал этот проект и что он еще мог бы дать (тут я имею в виду даже не деньги, а скорее опыт и эмоции, которые вы получаете от работы). Потому что любое приложение, софт, система — написана людьми. Это целая команда, не только разработчики, но и аналитики, менеджеры, тестировщики. И если что-то не так с командой, если что-то не так с руководством — каждый начинает это чувствовать и проект разваливается.
Жив хоть кто? Я тут собираюсь пробраться на парижский митап мобильных разработчиков. А то тут гуляла по диснейленду и приложение для него меня, мягко говоря, расстроило:С
Должен ли разработчик пользоваться тем, что разрабатывает?
Программное обеспечение представляет из себя десятки миллионов строчек кода, а количество разработчиков, стоящих за ними, достигает миллиона. Каждый программист, который занимается разработкой какого-либо продукта — это человек, у которого есть свои желания и стремления. Он так же покупает технику, как и его сосед юрист/врач/менеджер, водит машину, ходит в кино.
Когда я еще училась в универе, мой друг рассказал мне, как он сходил на конференцию, где был один из разработчиков платформы Windows Phone (мой друг как раз тогда занимался разработкой именно под WP). И когда он, воодушевленный, решил подойти к этому разработчику и задать ему пару вопросов, тот предложил сфотографироваться всем вместе и достал для этого новенький iPhone. Запал моего друга поутих. Так вот, значит ли это хоть что-нибудь?
Сейчас, когда мы уже на несколько лет впереди от этой ситуации, мы легко можем сказать, что этот разработчик просто сам не верил в собственный продукт, а если разработчик не верит в то, что разрабатывает — неудивительно, что это в итоге разваливается.
На мой взгляд, это немного не так. Однако и часть правды в этом так же есть.
Сложно сказать разработчику какой-нибудь космической программы попробовать ее использовать 24/7. Тут я скорее говорю о таких проектах, которыми мы в итоге действительно пользуемся, но по какой-то причине выбираем другой аналог, а не тот продукт, который или для которого мы что-то создаем.
Если вы разрабатываете приложение для автомобиля (карты, сбор статистики, такси), то вы должны уметь водить, потому что это позволит вам сформировать представление о том, как это все должно работать и насколько удобно пользоваться создаваемым вами продуктом другим людям в реальной жизни. Пишите какую-то операционную систему — пользуйтесь ей. Пишите приложения под iOS, используйте iPhone, пишете под Android — используйте Android.
Вы можете сказать, что все это неважно, ведь разработчик зачастую видит только строки кода и задачи в канбане. Какая ему разница, как работает то, что он создает, это задача уже архитектора и проектного менеджера, который пихает задачи и вообще кого угодно, но не его... Задача разработчика — писать код и чтобы его код не падал. И да, это тоже сработает, однако, к сожалению, если вы не имеете достаточного понимания о среде, для которой вы что-либо разрабатываете, вам очень сложно будет делать действительно хорошие продукты.
Я пишу это с полным осознанием, потому что я пыталась пользоваться разными системами и вижу в чем заключается ключевая разница. Если вы не удовлетворены тем, что разрабатываете, если вам наплевать — меняйте свою сферу, потому что вы портите жизнь не только себе, но и людям, с которыми работаете, а еще и сам продукт.
Программное обеспечение представляет из себя десятки миллионов строчек кода, а количество разработчиков, стоящих за ними, достигает миллиона. Каждый программист, который занимается разработкой какого-либо продукта — это человек, у которого есть свои желания и стремления. Он так же покупает технику, как и его сосед юрист/врач/менеджер, водит машину, ходит в кино.
Когда я еще училась в универе, мой друг рассказал мне, как он сходил на конференцию, где был один из разработчиков платформы Windows Phone (мой друг как раз тогда занимался разработкой именно под WP). И когда он, воодушевленный, решил подойти к этому разработчику и задать ему пару вопросов, тот предложил сфотографироваться всем вместе и достал для этого новенький iPhone. Запал моего друга поутих. Так вот, значит ли это хоть что-нибудь?
Сейчас, когда мы уже на несколько лет впереди от этой ситуации, мы легко можем сказать, что этот разработчик просто сам не верил в собственный продукт, а если разработчик не верит в то, что разрабатывает — неудивительно, что это в итоге разваливается.
На мой взгляд, это немного не так. Однако и часть правды в этом так же есть.
Сложно сказать разработчику какой-нибудь космической программы попробовать ее использовать 24/7. Тут я скорее говорю о таких проектах, которыми мы в итоге действительно пользуемся, но по какой-то причине выбираем другой аналог, а не тот продукт, который или для которого мы что-то создаем.
Если вы разрабатываете приложение для автомобиля (карты, сбор статистики, такси), то вы должны уметь водить, потому что это позволит вам сформировать представление о том, как это все должно работать и насколько удобно пользоваться создаваемым вами продуктом другим людям в реальной жизни. Пишите какую-то операционную систему — пользуйтесь ей. Пишите приложения под iOS, используйте iPhone, пишете под Android — используйте Android.
Вы можете сказать, что все это неважно, ведь разработчик зачастую видит только строки кода и задачи в канбане. Какая ему разница, как работает то, что он создает, это задача уже архитектора и проектного менеджера, который пихает задачи и вообще кого угодно, но не его... Задача разработчика — писать код и чтобы его код не падал. И да, это тоже сработает, однако, к сожалению, если вы не имеете достаточного понимания о среде, для которой вы что-либо разрабатываете, вам очень сложно будет делать действительно хорошие продукты.
Я пишу это с полным осознанием, потому что я пыталась пользоваться разными системами и вижу в чем заключается ключевая разница. Если вы не удовлетворены тем, что разрабатываете, если вам наплевать — меняйте свою сферу, потому что вы портите жизнь не только себе, но и людям, с которыми работаете, а еще и сам продукт.
Сейчас очень распространено мнение, что если тебе нечего скрывать, то тебе вроде как должно быть все равно, имеет кто-то доступ к твоим личным данным или нет. Я думаю, что это в корне неправильно, а вы?
Раз уж пошла такая пляска, то вот вам свежая статья о том, как прятать свои данные в Android-приложении. Советую ознакомиться;)
Хабр
6 способов спрятать данные в Android-приложении
Привет, дорогой читатель, уже достаточно давно я изучаю мобильные приложения. Большинство приложений не пытаются как-то скрыть от меня свой «секретный» функциона...
Я очень часто замечаю, что программисты не умеют управлять своими финансами, в плане того же вложения денег в какие-то подручные инструменты или вообще в отношении общих трат. Иногда они не покупают шампунь, потому что он дороже на 30 рублей и в тот же момент с огнем в глазах отдают свои кровно заработанные 80$ за Sublime Text, который имеет уйму бесплатных аналогов. Они даже не задумываются о том, сколько стоит их время и сколько стоят они сами. А темы касательно зарплат и финансов хоть всех и интересуют, но прямые разговоры об этом чуть ли не порицаются. И эта финансовая неграмотность ведёт к тому, что вроде программисты и зарабатывают хорошо, но в итоге деньги куда-то уходят, на что - непонятно, а видимого результата нет.
Запускаю новую рубрику — Подборка хороших материалов
Как работает Android
Android: новый метод рутинга и большое исследование безопасности IPC в приложениях
Разработка библиотеки: от API до публичного релиза
Как научить людей использовать Git
D8/R8 vs DX/Proguard - видео
Акция не регулярная, но периодически, когда у меня самой застой, я буду организовывать что-нибудь подобное:)
P.S. Приходите на MOSDROID - https://habr.com/ru/post/437368/
Как работает Android
Android: новый метод рутинга и большое исследование безопасности IPC в приложениях
Разработка библиотеки: от API до публичного релиза
Как научить людей использовать Git
D8/R8 vs DX/Proguard - видео
Акция не регулярная, но периодически, когда у меня самой застой, я буду организовывать что-нибудь подобное:)
P.S. Приходите на MOSDROID - https://habr.com/ru/post/437368/
Habr
Как работает Android, часть 4
Всем привет! Мы нашли время продолжить серию статей про внутреннее устройство Android. В этой статье я расскажу о процессе загрузки Android, о содержимом файловой системы, о том, как хранятся данные...
#shkryaba
Немного информации об ANR. Надеюсь, вам не придется решать такие проблемы, но всякое бывает ;)
Немного информации об ANR. Надеюсь, вам не придется решать такие проблемы, но всякое бывает ;)
Хабр
Причины возникновения ANR и как этого избежать
ANR (Application Not Responding) — ошибка, которая возникает, когда приложение не отвечает. В итоге открывается диалоговое окно, предлагающее пользователю подожд...