【问题标题】:how to prevent web service from being accessed?如何防止Web服务被访问?
【发布时间】:2016-02-04 07:27:23
【问题描述】:

问题(我认为是一个问题)我的网络服务,即 AddComplaints.asmx 可以通过键入链接打开,任何人都可以。

192.168.0.3:89/DM/AddComplaints.asmx

我已将此提供给想要使用此服务且工作正常的 android 开发人员,但我的问题是可以这样保留它还是有什么方法不能被公众打开,即通过键入一条链接。

或者这样正常吗?

【问题讨论】:

  • 我个人不会使用IP地址,这个地址只是您使用的网络本地的内部地址。但是,如果它是一个 Web 服务,你就不能真正阻止它的访问,这就是所有人都可以访问它的关键。如果您只希望授权用户访问它,那么您需要一个在您和 android 应用程序之间共享的 api 密钥,或者如果您想降低到用户级别,则需要应用程序用户之间共享。
  • @SimonPrice 先生,我提供的 ip 是我本地系统的旧 IP,现在它被部署在在线真实服务器上,每个人都可以访问,所以我很担心
  • 虽然我在后面使用了参数化查询,但这样打开它们是否正常
  • 现在类似于 103.xxx.xxx.xx/DM/AddComplaints.asmx
  • 首先,主要关注什么?其次,Web 服务旨在供任何人使用,第三,是的,我将有一个方法可以在其中获取参数,例如 api 密钥,以及您需要作为服务的一部分使用以产生结果的任何其他变量。 API 密钥将用作您的身份验证途径。我所知道的大多数网络服务都带有某种 API 密钥,以确保正确的人\系统正在访问并被授权这样做。

标签: c# asp.net web-services soap


【解决方案1】:

通常,您可以添加 HTTP 标头,例如Authorization,请求。您可以在服务器上检查此标头并返回 401,如果它的值不符合您的预期。您可以与应用开发者使用预共享密钥(例如 Guid)。

它并不完美,尤其是在使用 http 而不是 https 时,但它显然消除了很多问题。然后,您可以根据需要扩展令牌识别,例如从代码中的常量到灵活的令牌管理,每个消费者应用程序和环境(开发令牌、生产令牌等)都有单独的后端。

【讨论】:

  • 先生,很高兴知道,但我最近检查了许多网络服务,其中大部分都像我的一样开放,可以吗?
  • 绝对是的!开放总是好的。但是,如果我正确解释了您的 Web 服务名称,这意味着每个人都可以提出投诉,也可以使用小型机器人程序或其他方式。如果这是你可以忍受的东西,那没关系。
  • 是 android 用来在我的数据库中注册投诉的服务。所以这就是我问的原因
猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多