我在一家大公司拥有的大型旧程序上工作。很快,我们希望开始从Objective-C转向Swift。我们想要移动的原因之一是因为Swift比Objective-C更安全。但是,如果可能的话,我们希望避免任何安全漏洞。除了业务逻辑之外,是否有任何我可能在Obj-C中编写的安全代码示例,这些代码在Swift中本质上是不安全的,反之亦然?
我最担心的是用户提供的数据,以及中间人攻击欺骗与我们服务器的合法通信。
答案 0 :(得分:3)
虽然我认为转向Swift是谨慎的,但我认为它夸大了案例,认为Swift比Objective-C更安全。甚至,在Objective-C中,如果你避免使用C语言操作缓冲区并坚持使用Cocoa类,那么你通常可以避免缓冲区溢出等。
但如果这是你的担心,我的主要Swift警告将仔细审查任何使用适当命名的"不安全的缓冲区指针" (例如unsafeAddressOf
,unsafeBufferPointer
,UnsafeMutablePointer
等)。另外,请查看您必须调用的任何仍然需要缓冲区指针的C API。
我之前的观点仅仅是这是整体安全风险的一小部分,我不确定这在我的Swift过渡原理列表中会非常高。如WWDC 2015 Security and Your Apps和前几年的WWDC安全演示中所讨论的那样,Swift本身无法解决更多令人难以置信的问题,例如无法使用沙箱和使用钥匙串,草率网络和/或缓存管理等。这些安全问题通过严格的开发过程得到解决,包括明智的设计,编码,测试和评审,但可以在Objective-C和Swift中同等有效地解决。