2014-11-01 3 views
2

В моем приложении iOS мне нужно загрузить статический html-файл, который имеет некоторую конфиденциальную информацию в веб-представлении. Поэтому я поместил этот файл в папку ресурсов. Я использую этот код, чтобы загрузить его в веб-ви:iOS - содержимое ресурса доступно для общественности

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]]; 

[webview loadRequest:[NSURLRequest requestWithURL:url]]; 

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

  • Так есть ли другое место, где я могу хранить эти html-файлы?
  • Есть ли способ отключить доступ к папке ресурса.

ответ

0

Не используйте loadRequest, так как он ограничивает вас представлением данных в виде URL-адреса (следовательно, ограничивается определенными местоположениями файлов). UIWebView имеет и другие методы: loadHTMLString и loadData. Они позволяют загружать произвольные данные, что означает, что он может быть объявлен как переменная кода и скомпилирован в ваш двоичный файл. Если это еще недостаточно для вашей «конфиденциальной информации», вы можете зашифровать данные перед компиляцией с помощью симметричного шифрования, дешифровать перед загрузкой и удалением сразу после загрузки. Очевидно, что ключ шифрования должен быть частью вашего двоичного кода. Вы можете дополнительно запутать, сделав фактический шифр временным результатом некоторых предопределенных вычислений (например, XOR двух других блоков, хранящихся в разных местах).

Все это просто обфускация. Если ваша информация настолько чувствительна, что будет стоить усилий для того, чтобы кто-то мог перепроектировать ваш код и/или сделать дампы памяти, он это сделает. Вы пытаетесь «защитить» так же, как и позорно импотентный DRM.

+0

Можно выполнить аутентификацию с сервера, а затем сервер может отправить ключ в зашифрованный html-файл, ключ будет храниться в Keychain. – zaph

+0

Если у плаката есть какой-то сервер по его команде, тогда * сам файл * можно отправить _assymetricaly_ зашифрованным, и ни один из хаков не понадобится. Технология существует, она называется SSL. Тот факт, что плакат не хочет использовать это, означает для меня, что у него нет/нужен какой-либо сервер. –

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