У меня есть небольшой ответ на часть вашего вопроса, который я узнал при работе с тестерами проникновения в приложении для предприятия, которое я создал. Когда вы жестко кодируете строковый литерал, очень легко вытащить из приложения. Поэтому для того, чтобы запутать, несколько предложений, которые я получил, заключалось в том, чтобы добавить несколько строк вместе, чтобы получить пароль для шифрования. Поэтому, когда хакер вытаскивает строки из вашего приложения, он не знает, какие из них идут вместе и в каком порядке получить правильный пароль.
И если вы хотите пойти немного дальше, он предположил, что я использую также строку [SomeBuiltInClass class]
в строке пароля, чтобы даже если хакер вытащил все строки из моего приложения, никакая комбинация из них не будет получите правильный пароль.
[NSString stringWithFormat:@"%@%@%@",[NSString class],@"SomeIntermediateSomething",[NSData class]];
Но даже если вы делаете все эти и хакер имеет приложение в взломанном устройстве он все еще может видеть все вызовы и все параметры, которые ваше приложение толкает вокруг, так что они могут получить учетные данные, если вы передаете их в любом методе или функции. Так что вытащить пароль точно, когда вы хотите его использовать, также является ключевым. Они также могут запускать любой метод или функцию в вашем приложении с любыми данными, которые они хотят, чтобы они могли получить пароль так же, как вы, если они знают, какие функции вызывать.
Я уверен, что есть другие люди, которые знают гораздо больше, чем я, но это те вещи, которые я делал в прошлом.
Почему я получил -1? – user2977578
Учет жесткого кодирования для чего? Храните серверные серверы creds и создайте службу, через которую пользователи могут получать данные только через auth'd. – f1lt3r