我正在尝试将MVC 2用作我的iPhone应用程序的中间层。这里的基本原理是MVC站点将公开API,允许用户从iPhone发送数据,从运行MVC app后面的sql数据库获取GET数据。 MVC 2项目将促进逻辑的来回。
我对此几乎没有问题...... 1.保护MVC应用程序的最佳方法是什么,以便只有识别的iPhone才能访问GET / POST方法? 2.我可以为SQL Server使用共享主机帐户并开始指向我的dbconnections吗? 3.有关最佳实施的任何其他想法?
我对MVC很新,但对使用它非常兴奋...
谢谢!
答案 0 :(得分:0)
我不确定你的帖子实际上是关于asp.net MVC的。
您的第一个问题是如何保护应用程序,以便只有识别的iPhone才能访问GET / POST方法。这听起来更像是一个HTTP问题,我想这取决于你对“安全”的定义以及你正在尝试的内容。您可以从iPhone发送许可证密钥(通过HTTPS我会假设)并对其进行身份验证。但是,没有什么可以阻止某人共享此密钥或从非iPhone使用它。您可以在注册时创建哈希或其他东西,然后对其进行验证(想想Windows验证),这可能会有所帮助,但总会有办法解决这个问题。简而言之,您无法真正对“已注册的iPhone”进行测试,而是将您定义为“已注册的iPhone”,可能会被欺骗,但对您的需求“足够好”。
在MVC中,验证应该在属性级别完成 - 您将使用某种验证属性修饰您的Actions。内置的一个称为Authorize,并使用内置的ASP.NET成员资格。这听起来并不像您想要使用的那样,因此您可能希望构建自己的属性以自行验证HTTP请求。
关于使用共享主机帐户,我不确定这个问题。您是否在询问共享主机帐户是否适合您的需求?我不知道你的需求,但共享托管当然可以容纳1)ASP.NET MVC,以及2)SQL数据库。
答案 1 :(得分:0)
这是一个非常高级别的问题,你要问......
在这种情况下,我会以某种方式将一个唯一的密钥绑定到手机或用户+手机上(取决于iPhone的工作方式 - 它能容纳多个用户吗?)。这可以通过多种方式完成,但一种流行的方法是让用户通过您的网站进行身份验证并将手机与其帐户相关联。在此过程中,您会向手机发送一个唯一的密钥,用于后续请求。
这给你一些东西:
操作的基本安全性 - 您可以针对数据库验证传入密钥以查看它是否允许AND
用户连接 - 允许您“在云端”轻松存储您网站上的用户数据,让您立即知道谁在连接
要实际执行此操作,您应该像属性中的statichippo一样建议。我这样做是为了根据特定操作的角色要求验证用户。
共享托管可能有效,但如果您的应用成功,则可能需要更多功能。云托管在这里可能是有益的,因为您可能每天都有峰值/繁荣时段和低使用时间。
答案 2 :(得分:0)
如果这不具有实际的用户界面并且仅用于传输数据,那么最好创建一个WCF Web服务作为项目。然后,您可以使用详细in this blog post.
之类的内容从您的iPhone应用程序中使用此Web服务Web服务是针对这种情况而设计的,并提供了许多身份验证和安全方法。此外,它更加RESTful。