Подтвердить что ты не робот

Рекомендации по безопасности приложений для iOS

Когда вы думаете о безопасности приложений iPhone/iPad, я могу заметить, что есть:

  • Широко доступные инструменты взлома позволяют доступ к файловой системе.
  • Сетевой перехват, люди в средней атаке

== > угроза кражи данных

а также:

  • Доступность инструментов взлома, которые позволяют свободно делиться платным приложением с друзьями/сообществом (см. Cydia).
  • Доступность инструментов взлома, которые позволяют получать покупки в приложениях без оплаты (см. Cydia, и слышал, что он не работает с каким-либо приложением)

== > Угроза потери доходов

Итак, мне интересно # 1 , что лучше всего подходит для повышения безопасности в приложении iOS? Кроме того, # 2 , каковы наилучшие способы сокращения потерь дохода и минимизации взлома?

для # 1 Я видел некоторые слайды WWDC о безопасности 1 2 3 4 + яблочные документы

и я могу сказать, что между лучшими практиками тезиса есть:

  • Использование API-интерфейсов, предоставляющих защиту данных (например, NSFileManager с атрибутом NSFileProtectionKey)
  • Использование брелка
  • Защита конфиденциальных данных с помощью SSL и использование сертификатов

для # 2 Я думаю, что с использованием бизнес-модели, основанной на бесплатном приложении, то при покупке приложения с проверкой Store Receipts может быть модель с минимальной потерей дохода.

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

4b9b3361

Ответ 1

# 1, что лучше всего подходит для повышения безопасности в приложении iOS?

Соответствующая безопасность данных сильно зависит от характера информации. Является ли это долговечным или недолговечным? Это общий учет, который можно использовать для открытия других вещей или для одного фрагмента данных? Является ли потенциальная потеря конфиденциальностью, финансовой или безопасностью? Определение надлежащей защиты требует конкретного случая и не имеет общего ответа. Но вы просите о лучших методах, и их несколько. Ни один из них не является совершенным или нерушимым. Но это лучшая практика. Вот несколько:

  • Сохранять конфиденциальную информацию в цепочке ключей
  • Установите защиту данных на NSFileProtectionComplete, где это возможно.
  • Не храните конфиденциальные данные, которые вам действительно не нужны, или дольше, чем вам нужно.
  • Хранить токены аутентификации, специфичные для приложения, а не пароли.
  • Используйте HTTPS для проверки сервера, с которым вы связываетесь. Никогда не принимайте недопустимый или ненадежный сертификат.
  • При подключении к собственному серверу убедитесь, что служба представляет сертификат, который вы подписали, а не только "доверенный сертификат".

Это всего лишь небольшое количество подходов, но они задают основной тон:

  • Используйте встроенные API для хранения вещей. Поскольку Apple улучшает безопасность, вы получаете преимущества бесплатно.
  • Не храните конфиденциальную информацию и не уменьшайте чувствительность того, что вы храните.
  • Проверьте службы, с которыми вы общаетесь.

# 2 Каковы наилучшие способы сокращения потерь дохода и минимизации взлома?

Это много раз обсуждалось на SO. Этот ответ включает ссылки на несколько других обсуждений:

Защитить https-шифрование для iPhone-приложения на веб-странице

Короткий ответ: беспокоиться о ваших клиентах, а не о ваших не клиентах. Многие пираты никогда не будут платить вам деньги, поэтому ваше время и деньги лучше потратить на то, чтобы ваши фактические клиенты захотели заплатить вам и упростили их. Сосредоточьтесь на том, чтобы зарабатывать больше денег, а не защищать себя от денег, которых у вас никогда не было. Никогда, никогда, не обращайте внимание на платежного клиента в своих усилиях по наказанию неплатежеспособного клиента. Месть - это игра сосания и трата ресурсов.

Есть два отличных способа избежать пиратства:

  • Не публиковать.
  • Опубликовать хлам, который никто не хочет.

Есть некоторые основные вещи, которые вы можете сделать, которые стоят того, что нужно, как говорится, чтобы честные честные люди (некоторые из них обсуждаются в различных связанных дискуссиях). Но не спите ночью, беспокоясь о том, как сорвать пиратов. Ли бодрствуйте, беспокоясь о том, как поразить своих клиентов.

И всегда помните: Apple тратит больше денег, чем большинство из нас когда-либо видел в нашей жизни, пытаясь защитить iPhone. Тем не менее он взломан. Подумайте о том, что ваш бюджет будет достигнут.

Ответ 2

Когда злоумышленник получает физический доступ к устройству (например, кражу), он может делать почти все. Заметьте, что очень легко читать файлы приложений. Украденное устройство может быть легко взломанным, и злоумышленник получает доступ даже к защищенным файлам.

Мой совет по хранению конфиденциальных данных на устройстве:

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

Ответ 3

Роб Напир отметил хорошие моменты. Но чтобы сделать его более безопасным,

1 Каковы наилучшие методы повышения безопасности в приложении iOS?

  • Хранить конфиденциальную информацию в зашифрованном виде в Keychain.
    • При физическом доступе к данным брелка устройства можно легко сбрасывать.
  • Установите соответствующий класс защиты данных (предпочтительно NSFileProtectionComplete).
  • Всегда используйте собственное шифрование вместе со встроенным API для хранения данных.
    • Даже если хакеры находят лазейки в встроенном API, ваше приложение безопасно.
  • Перед записью временных сохраненных данных перед удалением.
    • Судебные методы могут использоваться для восстановления удаленных данных.
  • Используйте HTTPS и сертификат. Никогда не принимайте ненадежные сертификаты.
  • Храните важные файлы plist, sqlite и т.д. в папке Library/caches.
    • Файлы, хранящиеся в папке кэшей, не поддерживаются iTunes.
  • Всегда создавайте приложение с последним XCode.
    • Добавляет поддержку только для последних SSL-шифров

2 Каковы наилучшие способы снижения потерь дохода и минимизации взлома?

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

  • Предотвратите запуск приложения на устройствах Jailbroken (подумайте дважды, вы можете потерять действительных клиентов)
    • Добавить код, который обнаруживает существование джейлбрейка
  • Предотвратить присоединение приложения к отладчикам
    • Приложения, загруженные из AppStore, зашифрованы. Отладчики используются для дешифрования и анализа приложения. Добавить код, который обнаруживает отладчики.

Ответ 4

Это зависит от того, что вы делаете. Что касается доступа к API, все, что вам действительно нужно сделать, это информация о хеше и/или солевом пользователе, а затем сохранить информацию (если необходимо) в цепочке ключей (вы можете добавить дополнительную безопасность, зашифровав пароли, прежде чем вставлять их в цепочку ключей. лучше всего, что вы не используете NSUserDefaults, поскольку введенные в него данные хранятся в TXT файле в файловой системе iPhone, который, как вы сказали, может быть доступен хакерам.

Ответ 5

Добавление большего для повышения безопасности приложения

  • Не отправляйте параметры, используя HTTP GET, вместо этого используйте HTTP POST.
  • Вы можете выполнить закрепление SSL, чтобы избежать атак MITM.
  • Удалите все журналы из источника, прежде чем переходить к производству.
  • Не кодируйте ключ шифрования в самом приложении, лучше хранить их где-нибудь удаленно.
  • При оформлении запроса всегда используйте последнюю версию SSL (TLSv1.2).
  • Если в вашем приложении есть WebView, остерегайтесь внедрения ссылок. Если вы не ожидаете, что какой-либо URL, кроме HTTP, в WebView, проверьте все URL перенаправления с префиксом "http", чтобы загруженный веб-сайт не позволял открывать другую ссылку.
  • Вы можете разрешить или заблокировать расширения клавиатуры, так как они прослушивают все нажатия клавиш.