В моем проекте у меня есть некоторые функции Util, конвертирующие NSData в NSDictionary или NSArray, использующие NSJSONSerialization https://developer.apple.com/documentation/foundation/nsjsonserialization/1415493-jsonobjectwithdata?language=objc
Пример:
+ (NSDictionary *) jsonToDictionary: (NSData *)jsonResult mutableContainer:(BOOL)mutContainer mutableString:(BOOL)mutString failBlock:(void(^)(NSError *)) failBlock {
NSError *error;
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:jsonResult options:(kNilOptions) || (mutContainer ? NSJSONReadingMutableContainers:kNilOptions) || (mutString ? NSJSONReadingMutableLeaves: kNilOptions) error:&error];
if (error) {
if (failBlock) {
failBlock (error);
}
}
return result;
}
Но при реализации этого проекта используйте Penetration Test от партнера. Они сказали, что у него есть JSON-инъекция .
JavaScript Object Notation или JSON - это открытый формат файла, который использует читаемый человеком текст для передачи объектов данных, состоящих из пар атрибут-значение и типов данных массива.
Во время оценки было замечено, что приложение записывает неподтвержденный ввод в JSON.
Внедрение JSON происходит, когда данные поступают в программу из ненадежных источников. Этот вызов может позволить злоумышленнику внедрить произвольные элементы или атрибуты в объект JSON. Успешная эксплуатация может потенциально привести к отказу в обслуживании или компрометации мобильного приложения.
При записи пользовательских данных в JSON необходимо соблюдать некоторые рекомендации:
Не создавайте атрибуты JSON, имена которых получены из пользовательского ввода.
Убедитесь, что вся сериализация в JSON выполняется с использованием функции безопасной сериализации, например, NSJSONSerialization.dataWithJSONObject, который разделяет ненадежные данные в одинарных или двойных кавычках и экранирует любые специальные символы.
Как я могу пройти правила теста на пентацию JSON-инъекции, но все же
возможность поддерживать правильную функциональность этой функции