У меня есть предикат для запроса в базовой базе данных, но я не знаю, как правильно проверить его параметры?
- (void) queryToDatabaseWithStoreId:(NSInteger) storeId {
[NSPredicate predicateWithFormat:@"store.storeId = %d", storeId];
}
Мой вопрос: как я могу проверить параметр storeId или что мне нужно использовать, чтобы эта уязвимость исчезла?
А если у меня есть список:
- (void) queryToDataBaseWithListStore:(NSArray<Store *> *) storeList {
[NSPredicate predicateWithFormat:@"store.storeId IN %@", [storeList valueForObject:@"storeId"]];
}
https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/ValidatingInput.html#//apple_ref/doc/uid/TP40007246-SW3
Мне нужно избегать этого:
Следующие широко используемые функции и методы подвергаются атакам форматной строки:
Стандарт С
printf и другие функции, перечисленные на странице руководства printf (3)
sscanf и другие функции, перечисленные на странице справочника scanf (3)
syslog и vsyslog
Углерод
AEBuildDesc и vAEBuildDesc
AEBuildParameters и vAEBuildParameters
AEBuildAppleEvent и vAEBuildAppleEvent
Основной фонд
CFStringCreateWithFormat
CFStringCreateWithFormatAndArguments
CFStringAppendFormat
CFStringAppendFormatAndArguments
какао
stringWithFormat :, initWithFormat: и другие методы NSString, которые принимают отформатированные строки в качестве аргументов
appendFormat: в классе NSMutableString
alertWithMessageText: defaultButton: alternateButton: otherButton: inforrativeTextWithFormat: в NSAlert
чина для предиката: предикат: предикат: аргумент: и * 1027
поднять: формат: и поднять: формат: аргументы: в NSException
NSRunAlertPanel и другие функции AppKit, которые создают или возвращают панели или листы
Каков наилучший способ избежать этой атаки?