1

比方说,我有一个公共的Web API,它不需要授权的,如:是否有可以通过移动原生应用程序(iOS,Android,Windows Phone等)访问的ASP.NET Web API?

public class MobileDataController : ApiController 
{ 
    [AllowAnonymous] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "One", "Two", "Three" }; 
    } 
} 

是否有可能让这个网络API仅适用于我的iPhone和Android原生应用?

基本上我不希望Web API处理任何来自我的手机本机应用程序的请求。

+3

听起来像你*** ***需要授权。 – Kritner

+0

https://stormpath.com/blog/the-ultimate-guide-to-mobile-api-security/ – Kritner

+0

Kritner - gota阅读。我仍然想知道如果我没有验证,我可以做到。我的用户无需通过身份验证即可使用应用程序... – Tohid

回答

3

不需要你想要的就是所谓的设备认证,这是一个捆绑在Trustworthy Computing下的概念。然而,这是不可能的,除非你拥有该设备,并且可以确保它不能越狱,并且所有通信都不能被拦截。

无论您添加攻击者的代码是什么,都可以对其进行逆向工程。攻击者可以使用fiddler添加您发送的标题以指示它是移动设备。如果您将OAuth与客户端ID一起使用,则客户端ID需要位于您的软件中,因此可以进行反向工程。

例如,SnapChat不支持Windows Phone。 SnapChat有用于Windows Phone的克隆,SnapChat可以做的唯一事情就是提交删除通知,因为如果它们做得很好,它们与在iPhone上运行的真实客户端无法区分。

+0

blowdart - 嗯 - 有什么我们可以做到这一点难以让黑客机器人使用我们的Web API 。例如,在Web应用程序中,我们使用Google Recaptcah来确保它是一个人。我们可以对iPhone或Android本机应用程序做类似的事情吗? – Tohid

+0

没有任何真正的成功没有。 – blowdart

相关问题