【问题标题】:Making an appliction so it is the only application that can connect to my WebAPI制作一个应用程序,使其成为唯一可以连接到我的 Web API 的应用程序
【发布时间】:2015-09-04 08:51:03
【问题描述】:

如何创建一个Application 来与我的WebAPI 交互。该应用程序会将一些信息发送到我的网站(WebAPI),然后我将使用此信息更新我的数据库,但问题是如何保护它,所以只有我的应用程序可以与我的网站交互?

设计用于部署到多台计算机的应用程序。并且用户可以匿名使用该应用程序。例如the lightshot app

【问题讨论】:

  • 应用程序是部署在一台计算机上还是多台计算机上?您可以让您的应用程序发送登录凭据,或允许基于 IP 地址的访问。或使用数字证书。但我不确定您如何真正知道请求来自您的应用程序。毕竟,如果一个应用程序可以被计算机使用,那么它可以被人类阅读,并且您的应用程序使用的协议可以被欺骗。
  • 好吧,我知道如果用户得到了客户端,我无法控制它,但我想保护它,所以revers engineer / spoof my app不是那么容易
  • @MixedCoder:那为什么还需要授权呢?在进入这个兔子洞之前,请考虑要解决的问题的性质。您有一个允许未知用户向您的服务器发布信息的应用程序,并且您希望阻止未知用户向您的服务器发布信息?
  • 该网站允许从网站匿名上传图片。我会说该应用程序通过与网站相同的 API 上传图像。我会说,如果最终用户复制了网站的源代码,他们可以使用相同的方法构建一个应用程序来自己上传图像。
  • @MixedCoder:他们可能对什么是“有效”或“无效”有一些定义。我不熟悉他们的代码或功能,所以我不知道那个定义是什么。关键是,你似乎完全走错了路。问如何沿着这条路前进对我们来说是陌生的,因为这条路本身没有多大意义。为什么您希望只有您的应用程序 连接到您的服务器?你想防止什么?如果服务器正常工作,为什么请求来自哪里很重要?

标签: c# authentication asp.net-web-api oauth oauth-2.0


【解决方案1】:

您不能将对网站(或任何 IP 端口)的访问限制为仅限于一个应用程序。

验证服务器上的请求,并且可能只允许经过身份验证的用户访问 - 这对于大多数情况(付费游戏除外)应该足够了。

您可以使重播/重新创建通信协议变得更加困难:

  • 需要客户端证书才能连接 HTTPS
  • 经常更改客户端和协议本身的代码
  • 只允许经过身份验证的用户
  • 来自同一用户的速率限制请求,以使重新设计协议变得更加困难......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多