保护Web服务器上的文件并通过iPhone访问它们
我需要在需要安全保护(加密或基于访问权限?)的Web服务器上存储数千个PDF。保护Web服务器上的文件并通过iPhone访问它们
我想要通过我目前正在制作的iPhone应用程序访问这些文件的唯一方法,即保护用户名/密码。 (我通常使用php从应用程序到数据库/文件进行通信)
- 我应该使用哪种技术来保护文件?
- 我应该用什么iOS/php代码/框架在设备上显示它们?
- 我是否需要通过ssl或其他方式加密传输?
由于提前,利
在应用程式中显示PDF,您可以使用UIDocumentInteractionController
。见Document Interaction Programming Topics for 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界面控制对文件的访问。始终假定您的网址可能被泄露。根据所需的安全级别,您可能还需要对服务器上的文件进行加密,并让应用对其进行解密。
对于一般安全问题,我可能会建议查看WWDC 2012视频The Security Framework。或WWDC 2011视频Security Overview和Securing Application Data。另请参阅Security Starting Point for iOS文档。
如果这些PDF文件中包含你应该使用一个牢不可破的加密算法,如AES-256加密他们的敏感信息,使用的mcrypt对称加密(见php.net/mcrypt) 。
我会建议你弹出iOS的默认PDF阅读器,这将是最简单的方法来做到这一点。
再一次,如果这些文件是超级敏感或什么的 - 当然,使用SSL/TLS。无论如何,建议使用它。
所以用这种方法我会用mcrypt在本地加密文件,上传它们。然后在我通过SSL发送它们之前临时解密它们? – lellis2k
不,您应该加密并将它们存储在网络服务器中,一旦文件被请求>您将它解密并通过SSL发送它们。 –
这里有很多的可能性,你会选择哪一种可能取决于你所需要的安全级别。话虽如此,我为文档服务器使用“ASP.Net”取得了类似的结果。它的限制已经足以满足我目前的需求。 至于在设备上显示它们,我使用了一个'UIWebview'来解决这个问题,正如在这个答案中所解释的:http://stackoverflow.com/questions/19296260/how-to-upload-pdf-file-from- ibook或其他应用程序在ipad应用程序/ 19297490#19297490 – Robert
一种方法是;将PDF文件存储在文档根目录之外并通过一些安全的PHP系统提供文件。 – vonUbisch