【问题标题】:How to prevent data-scraping a valuable data web service?如何防止数据抓取有价值的数据 Web 服务?
【发布时间】:2012-12-30 07:02:08
【问题描述】:

我有一个关于 Windows 商店应用程序的好主意。我想做这个应用程序。但是,它需要一个大型且有价值的数据库,我需要为其创建服务,这样人们就无法轻易窃取它。 我的想法可能是在 Azure 上托管一个移动服务(我从未尝试过)并创建一个 .net Web API 项目来接受请求并将 Json 像糖果一样发送到 Windows 8 mvvmclient。但是我不希望有人在应用程序和服务之间来回嗅探我的流量,并弄清楚如何使用我的应用程序和服务获取/发布数据,然后设置他们自己的应用程序/网站以使用我的带宽显示这些数据让他们赚钱。

如何保护我的应用程序到数据库的数据访问,使其无法对我进行逆向工程。

这也是开发此类高容量 Windows 8 应用程序的最佳设置吗?你有更好的建议吗?

我知道我可以使用 SSL 等来加密往返的流量。我要保护的是有人使用 Firebug 或 Fiddler 来确定可以发布哪些参数来获取特定记录。然后创建他们自己的站点,该站点仅将我的服务用作端点并虹吸我的数据并嫖娼我的带宽。 IE。只使用萤火虫我知道我可以使用https://www.google.com/search?q=dallas 在谷歌上搜索达拉斯这个词。即使我加密了页面,他们也可以在浏览器中看到这么多。因此,如果有人在他们自己的应用程序中执行相同的获取/发布,他们将获得相同的记录,从而使用我的东西。

【问题讨论】:

  • 我认为他们总是能够嗅探从他们的计算机进出的网络流量;有一些程序。我认为您想要做的是对请求进行速率限制并可能对其进行加密。

标签: c# web-services api azure windows-store


【解决方案1】:

您可以做的最直接的事情是使用OAuth 之类的方式为您的用户设置身份验证。这将允许您确保不会以匿名方式与您的服务进行通信。

一旦您验证了您的请求,您就可以对那些不会影响普通用户的请求进行控制。您可以对请求进行速率限制或限制或任何数量的策略,以节省大量时间消耗数据集。

例如,当您注意到大量用户从单个 IP 地址聚集时,您可以开始阻止请求。您可以对每个用户设置合理的限制(例如每分钟 10 次 API 调用,结果集限制为 50)。你明白我的想法。

【讨论】:

  • 我考虑过限制,但数据的访问本质上是非常动态的,它们可能是 10 次快速调用或 1 次单一调用等。我不确定。我希望某种令牌传递或类似 API 密钥的东西。我喜欢 OAuth 的想法...
【解决方案2】:

我想我们遇到了同样的问题。我正在开发一个 Windows 8 应用程序,它正在联系基于 Windows Azure 网站构建的 Web 服务。我不希望坏人通过 Fiddler 等工具拦截流量,从而向我的服务发起一些虚假请求。

我在一个邮件组中问了这个问题并得到了提示。我从未尝试过,只是为了您的信息。如果您的应用程序需要用户登录,那么用户密码是数据/流量保护的良好种子。您可以使用密码生成密钥对,签署请求并将其发送到服务器以及公钥。然后在服务器端它可以通过公钥验证签名。

使用 HTTPS 是另一种方法。但如你所知,即使是 HTTPS,坏人也可以通过 Fiddler 知道实际数据。

使用证书可能是我认为的另一种解决方案。但是我没有找到关于如何从客户的机器上安装和选择证书的相关文档。

HTH

【讨论】:

    【解决方案3】:

    只需通过 HTTPS 提供它,然后他们就无法嗅探它。

    【讨论】:

    • 使用 Fiddler 或许多其他工具嗅探 HTTPS 流量很简单。
    • Fiddler 代理 HTTPS,因此它可以嗅探它,它不会破坏它。网络浏览器容易知道这一点,您的应用也容易知道这一点。
    • 意思是,如果你真的验证了HTTPS,你是无法嗅探的。
    猜你喜欢
    • 2019-03-24
    • 2013-12-22
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多