10

我知道这个问题可能过于笼统,但为了缩小问题范围,这里有一个简短的描述:

我打算忘记ASP.net UpdatePanel并通过 JQuery 使用 ajax。我担心由于 JavaScript(以及因此的 JQuery 代码)的简单客户端性质,任何查看我网页源代码的人都可以意识到我正在调用的 Web 服务的 URL 是什么以及正在传递什么到那些网络服务。

UpdatePanel用于这些类型的操作时,我确信调用 Web 服务是在服务器端完成的,并且我不担心有关调用敏感 Web 服务的信息被公开暴露的问题,但现在我计划通过 Ajax 使用JQuery,它让我很担心。

我的担忧是否合理,如果属实,避免暴露 web-service-calling-info 威胁的最佳解决方案是什么?

澄清:当说 UpdatePanel 时,我的意思是利用一系列技术,包括 ASP.net AJAX、代码隐藏和依赖服务器端 Dll 来执行异步服务器端操作,而不是需要 Web 服务来吸引服务器的 jquery Ajax。

4

3 回答 3

6

互联网上无法通过隐藏 URL 来始终保护您的 Web 服务。我不确定当您说您的更新面板从服务器调用 Web 服务时,您并没有获得 AJAX 的真正威力。

保护 Web 服务的一种方法是在 Web 服务端使用身份验证。例如,您每次访问源时都需要发送一些身份验证密钥,这很常见,您有很多公共 Web 服务使用身份验证密钥(如 OpenId 实现)自我保护。如果您不想更改 Web 服务逻辑,我认为 AJAX 的 jquery 方式不是一个安全的选择。

这是一个想法,您可以拥有两个级别的 Web 服务,一个将为您可以在 jquery 中使用的所有内容打开。从当前的 Web 服务,从服务器端调用另一个安全的 Web 服务。即使是现在,您也可以为某些特定机器 IP 配置传入请求。

在这种情况下,除了您自己的服务器之外,其他任何人都无法访问安全地保存在防火墙后面的 Web 服务。这与我们从应用程序服务器连接到数据库服务器时所做的类似。

让我知道这是否有帮助。

于 2013-04-05T12:39:06.730 回答
5

我将说明我的答案希望解决的问题:

  1. 假设您将服务托管在 Web 服务器以外的机器上问题是您向潜在的攻击者提供了这些机器的名称/地址。

  2. 攻击者可以编写脚本/机器人来抓取您的数据。

  3. 攻击者可以专注于您的网络服务并尝试破解它们/获得对您网络的访问权限。

  4. 攻击者可以尝试在您的 Web 服务上执行 DoS/DDoS。

我过去使用的解决方案是在 Web 服务器上创建一个轻量级代理,以便所有 AJAX 调用都简单地指向当前域。然后,当有来电时,它会被简单地路由到适当的 Web 服务,该服务托管在网络内部的某个地方。

它在网络上创建了一个额外的跃点,但它也有以下好处:

  1. 它隐藏了托管服务的机器的实际 IP。
  2. 您可以轻松锁定一台 Web 服务器并监控异常活动。如果您看到活动激增,您可能会关闭 Web 服务。(如果你使用不同的机器,你必须监控两个盒子。不是一个大问题,但只监控一个更容易。)
  3. 您可以轻松地在代理中放置一个分布式缓存层。这可以保护您免受负载/拒绝服务 (DoS) 攻击,并且显然支持正常的 Web 服务流量。
  4. 您可以在代理级别隐藏身份验证。公开电话不会背叛您的身份验证方案。否则,攻击者可以看到您使用的令牌、密钥或秘密或任何东西。在 Web 服务器上创建代理会隐藏该信息。数据仍会流过,但您可以再次对其进行监控。

在我看来,真正的好处是它减少了应用程序的表面积,从而缩小了攻击者可以做的事情。

于 2013-04-11T22:41:52.347 回答
2

由于您参考了 ASP.Net,因此知道它的视图状态很容易被解密。没有万无一失的方法可以保护您的代码(更不用说调用的 url)。如果您使用一些可能允许不受限制和危险操作的参数调用 Web 服务,那么您最好开始使用一些用户/角色/权限管理。

如果您担心“中间人”攻击,最好的选择是使用 https。

于 2013-04-15T09:37:34.260 回答