【问题标题】:Hiding client side API calls隐藏客户端 API 调用
【发布时间】:2015-12-26 20:50:20
【问题描述】:

我正在制作一个小应用程序(.Net web api 后端服务和 angularjs 用于前端)只是为了学习这些框架,开始喜欢项目本身并认为部署它会很好......

然而,我的 .net 休息服务是公开的,目前任何人都可以通过 api 对象暴露出来,显然我不希望有人偶尔清除我的数据库。我并没有真正存储任何敏感信息,它是一个小型网络游戏,我在数据库中存储的只是项目、位置、游戏大厅、玩家(只有 id、用户名和参考列)之类的东西,但仍然删除它们会在某个地方造成大问题.

那么我该如何预防呢?我的第一个想法是,只要没有人通过以某种方式隐藏用户的 API 调用来发现我的 api 地址,它就会解决。这是可能且现实的解决方案吗?

【问题讨论】:

  • "I don't want somebody clearing my database once in a while" - 那么不给未经授权的用户这样做的能力吗?您无法隐藏客户端代码正在执行/调用的操作。为了在客户端上执行代码,客户端根据定义需要能够读取该代码。
  • @David 当没有用户密码时,我不确定如何授权他们
  • 好吧,要么您对用户进行身份验证/授权,要么您不公开该功能。真的没有办法。

标签: javascript angularjs api security


【解决方案1】:

您无法向客户端隐藏您的 API 调用,无论您做什么,他们都可以使用像 Wireshark 这样的数据包嗅探器来查看您的应用在做什么。

您需要构建一个更安全的 API,只允许用户操纵他们的帐户。您可以通过分配令牌来控制他们的访问权限,就像 oAuth 的工作方式一样。

【讨论】:

  • 我不确定传统身份验证是否适用于我的情况。按照设计,玩家没有密码。人们只需写下他们的用户名(不必是唯一的),然后加入游戏大厅或创建一个新的,如果他退出并再次出现,他只是重复此操作并创建另一个“帐户”。 “帐户”在网页关闭时被删除。编辑:有一个网页游戏与我的用户具有几乎相同的系统spyfall
  • 玩家主持大厅吗?
  • 是的,任何人都可以创建或加入它,但他们现在被分配为玩家,主持人与加入大厅的任何其他玩家没有什么不同。大厅是 3-8 人的小型玩家
  • 好的,所以不要让 API 调用可以删除您的大厅,而是让您的大厅经理 ping 大厅以确保它们仍然正常运行。在它们断开连接一段时间后,将它们从您的大厅列表中删除。你的前端不应该接触你的数据库,创建一个 API,只为用户提供他们运行你的应用所需的最低限度。
  • 实际上,我有类似的一般想法,即限制客户端访问以删除任何内容并在 x 时间内未更新时自动删除内容,因为游戏时间很短,并且每次重新启动时,每个玩家都会更新。谢谢,现在我知道我的想法是正确的。
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2011-11-25
相关资源
最近更新 更多