我需要在需要保护的网络服务器上存储数千个 PDF(加密或基于访问权限?)。
我希望访问这些文件的唯一方法是通过我目前正在制作的 iPhone 应用程序,该应用程序受用户名/密码保护。(我通常使用 php 从应用程序与数据库/文件进行通信)
- 我应该首先使用哪些技术来保护文件?
- 我应该使用什么 iOS/php 代码/框架在设备上显示它们?
- 我是否需要通过 ssl 或其他方式加密传输?
在此先感谢,利
如果这些 PDF 文件包含敏感信息,您应该使用牢不可破的加密算法(例如 AES-256)对其进行加密,使用 mcrypt 进行对称加密(请参阅php.net/mcrypt)。
我建议您弹出 iOS 的默认 PDF 阅读器,这将是最简单的方法。
同样,如果这些文件是超级敏感的或什么的 - 当然,使用 SSL/TLS。无论如何都建议使用它。
要在您的应用程序上显示 PDF,您可以使用UIDocumentInteractionController
. 请参阅适用于 iOS 的文档交互编程主题。就像是:
NSURL *url = ... // the file URL for the PDF
UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:url];
controller.delegate = self;
[controller presentPreviewAnimated:YES];
显然,您必须将您的视图控制器指定为符合UIDocumentInteractionControllerDelegate
协议,并且至少要实现documentInteractionControllerViewControllerForPreview
:
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller
{
return self;
}
您还可以在 中查看 PDF UIWebView
,但文档交互控制器可能更好。
要加密传输,您应该使用 SSL(例如使用 HTTPS 而不是 HTTP)。您显然还应该确保您永远不会以明文形式发送/存储密码。
在保护服务器上的文件方面,至少要确保它们在没有经过一些授权过程的情况下是不可访问的。也就是说,不要只是将文件放在 Web 服务器上,然后在某些应用程序级别的安全性上进行回复以检索 URL。将文件存储在 Web 服务器根目录之外的其他位置,并通过您的安全 Web 界面控制对文件的访问。始终假设您的 URL 可能会受到攻击。根据所需的安全级别,您可能还希望加密服务器上的文件并让应用程序解密它们。
对于一般的安全问题,我可能建议查看 WWDC 2012 视频The Security Framework。或 WWDC 2011 视频安全概述和保护应用程序数据。另请参阅iOS文档的安全起点。