iOS-函数JSONObjectWithData与JSON注入有关

时间:2018-11-01 08:28:20

标签: ios objective-c json nsdictionary

在我的项目中,我有一些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;
}

但是,当此项目使用合作伙伴的渗透测试时。他们说它具有 JSON注入

  • 说明

JavaScript Object Notation或JSON是一种开放标准的文件格式,它使用人类可读的文本来传输由属性-值对和数组数据类型组成的数据对象。

  • 观察

在评估过程中,发现应用程序将未经验证的输入写入JSON。

  • 声明

当数据从不受信任的来源进入程序时,将发生JSON注入。此调用可能允许攻击者将任意元素或属性注入JSON实体。成功的利用可能会导致拒绝服务或损害移动应用程序。

  • 推荐

将用户提供的数据写入JSON时,应遵循一些准则:

  1. 不要创建名称来自用户输入的JSON属性。

  2. 确保使用安全的序列化功能(例如, NSJSONSerialization.dataWithJSONObject,用于在单引号或双引号中分隔不受信任的数据,并转义任何特殊字符。

  

如何通过JSON注入的pentation-test-rules,但仍然   能够维护此功能的正确功能

0 个答案:

没有答案