gpt4 book ai didi

objective-c - NSClassFromString() 安全问题

转载 作者:行者123 更新时间:2023-12-03 16:54:47 24 4
gpt4 key购买 nike

我正在尝试创建一个工厂类结构,其中我的抽象基类 PDObject 根据 NSDictionary 中传递给它的信息实例化一个正确的子类实​​例。这是我的 PDObject 初始化方法:

- (id)initWithDictionary:(NSDictionary *)dictionary inEnvironment:(PDEnvironment *)environment {
NSString *className = [dictionary objectForKey:@"objectType"];
if (className) {
Class objectClass = NSClassFromString(className);
if ([objectClass isSubclassOfClass:[PDObject class]]) {
self = [[objectClass alloc] initWithDictionary:dictionary inEnvironment:environment];
} else {
NSLog(@"tried to instantiate an object of the wrong object type");
self = nil;
}
} else {
NSLog(@"tried to instantiate an object without an object type");
}
return self;
}

我想知道是否有人知道这种模式的任何安全问题。我担心字典中可能会传递一些恶意内容并实例化一些意外的内容。我进行了检查以确保它是 PDObject 的正确子类。这里有什么我应该担心的吗,还是我只是偏执?

最佳答案

这不太可能是一个安全漏洞,但将潜在的随机字符串传递给运行时函数并不是运行时真正需要加强的。风险不是实例化随机类,而是导致应用程序可能崩溃或执行随机代码。

一般来说,我不会超出最小的努力。为此,我建议使用 NSScanner 扫描类名,看看它是否有任何明显越界的字符。我认为扫描 alphanumericCharacterSet 就足够了。

关于objective-c - NSClassFromString() 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14113353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com