3

我读过这个:https ://developer.apple.com/library/mac/documentation/security/conceptual/SecureCodingGuide/Articles/ValidatingInput.html

但是,我不清楚在使用NSString +stringWithFormat:.

4

1 回答 1

2

利用此漏洞的方式是接受来自用户的格式字符串。

例如,以这段代码为例。您有一个带有按钮和文本字段的简单视图,允许对用户输入进行 NSLogged。

- (void)buttonTouchUpInside:(UIButton *)button
{
    NSLog(@"User says:");
    NSLog(self.userInputTextField);
}

如果用户crash! %@在框中键入并点击按钮会发生什么?好吧,他们可能会撞车。但正如链接文章所解释的,用户可以使用此攻击向量来操纵堆栈并导致您的应用程序执行任意代码。如果这个字符串来自基于互联网的攻击者怎么办?

永远不应允许将用户输入用作格式字符串。编写此代码的安全方法如下。

- (void)buttonTouchUpInside:(UIButton *)button
{
    NSLog(@"User says: %@", self.userInputTextField);
}

这样,如果用户键入crash! %@,您将看到打印出来的内容:

User says: crash! %@
于 2014-05-05T15:17:06.747 回答