2012-04-10 2 views
1

Моя программа имеет пользовательский код доступа, который используется для доступа к данным программы. В процессе создания потока программы выглядит следующим образом:Сохраняет ли временное хранение конфиденциальных данных в iVar угрозу безопасности?

  1. попросить пользователя ввести пароль
  2. попросить пользователя повторно вводить код
  3. если секретные коды матч продолжится, то переход к шагу 1 и начать процесс над

Для того, чтобы сравнить два введенных пароля, я временно храню код доступа в переменной экземпляра. Может ли это быть потенциальной дырой в безопасности? Если да, то почему это проблема и каково было бы ваше решение? Может быть, хранить хешированную версию? Благодаря!

ответ

1

Я думаю, что вы подходите, если прекрасно (сохраняете пароль в iVar).

Возможно, вам нужно определить для себя «дыру безопасности». Разумеется, тогда злоумышленник сможет прочитать сохраненную память от похищенного iPhone и восстановить пароль. Но являются ли данные разумными?

Вы можете улучшить свою концепцию безопасности, перезаписав свою память нулевыми байтами (такую ​​же длину, как введенный пароль), удалив все ссылки в памяти вашего пароля открытого текста и просто сохраните SHA256 введенного пароля. Также убедитесь, что null-bytes-overwrite и delete при получении UIApplicationDidEnterBackgroundNotification.

Но я не думаю, что это стоит того.

+0

Jonas - да, данные могут быть чрезвычайно чувствительными, например, информация CC, имя пользователя/пароль для онлайн-банкинга и т. Д. Изменит ли ваш ответ ваш ответ? –

+0

Хорошо. Затем возьмите нулевую запись байтов (я только что обновил свой ответ). –

0

Нет проблем с временным хранением этого пароля в iVar.

Смежные вопросы