除了单个应用程序之外,如何保护.NET中的Web服务免受外部世界的影响?

时间:2018-01-08 10:15:02

标签: c# .net web-services

我有一个网站,其架构(HTML + JSON + webservice(C#))安装在对互联网开放的服务器上。现在,我的网络服务向全世界开放,所以任何人都可以访问它并可能尝试发生故障。

我想做的是让我的网络服务仅限于我的应用程序,而不是其他应用程序。就像一个网站是开放的互联网,但它的网络服务只对网站是私有的,而不是整个互联网。

目前,存在大数据安全问题。

3 个答案:

答案 0 :(得分:1)

我建议您考虑使用证书加密您的Web服务,然后您的应用程序将使用相同的加载证书来调用它。只有拥有服务器证书密钥的实体才能解密您的呼叫。

Accessing a web service and a HTTP interface using certificate authentication

Calling a rest api with username and password - how to

编辑:如果你不能使用证书方法,因为你是直接打电话给浏览器,你可能想查看某种授权cookie,这样可以在你的登录页面上说这个请求可能对公众开放但是在所有后续请求中,您需要进行身份验证,一旦用户登录,您就依赖授权cookie或令牌来验证他们是否有权访问。

另一种方法:IdentityServer实例具有提供者令牌存储,因此您可以从商店请求令牌,然后只能使用已颁发的令牌访问API。然后,您的API也会查询商店以检查令牌是否有效。

答案 1 :(得分:1)

我找到了一个非常简单的解决方案..通过在Web服务中获取远程客户端的IP地址,我可以验证请求是否来自我的网络服务器

所以任何时候如果任何垃圾邮件客户端尝试请求我的Web服务,我将在webservice内的每个请求中检索其ip并拒绝ex的请求:

if (HttpContext.Current.Request.UserHostAddress.ToString() == "127.0.0.1")
{
   return "my server";
}
else
{
  return "invalid client or spammer"
}

答案 2 :(得分:0)

主要方法是添加一些登录/帐户系统。那当然需要进行管理以及所有这些。

其他海报'只是将一些密钥或证书放入其中的方法只有在不那么重要时才会起作用。您在应用程序中存储的任何内容都是可反向工作的。因此,如果某人有正确的决心,那么这种保护水平就很容易克服。

如果可能的消费者数量足够小,另一种方法可能会起作用: 使其只能从本地网络(与本地网络关联的IP地址范围)访问。然后使用VPN之类的方法,以便客户端可以连接到本地网络。基本上,您将帐户部分移动到另一个系统。但是这种方法可能存在安全问题,特别是如果VPN连接直接进入DMZ。

最后,它真正取决于它的重要程度。安全存在于"任何人通过Wireshark阅读他的计算机网络流量都可以打破它#34;为高等级私人数据提供合理保障"我们不知道您需要什么级别的安全性以及您拥有的技能水平,因此我们暂时无法提供有用的答案。