使用JQuery调用Web服务时可能存在哪些威胁?如何避免这些威胁?

时间:2013-04-05 10:58:30

标签: asp.net web-services jquery updatepanel security

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

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

当使用UpdatePanel进行这些类型的操作时,我确信调用Web服务是在服务器端完成的,我不关心调用敏感Web服务公开公开的信息问题,但现在我打算通过JQuery使用Ajax,这让我很担心。

我的担忧是否合理,是否真实,哪些是避免网络服务呼叫信息受到威胁的最佳解决方案?

澄清:在谈到UpdatePanel时,我的意思是利用一系列技术,包括ASP.net AJAX,代码隐藏和依赖服务器端Dll来执行异步服务器端操作而不是jquery Ajax这需要Web服务来与服务器进行交互。

3 个答案:

答案 0 :(得分:6)

互联网无法通过隐藏URL来始终保护您的Web服务。我不确定当你说你的updatepanel从服务器上调用web服务时你没有采用AJAX的真正威力。

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

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

在这种情况下,除了您自己的服务器之外,没有其他人可以访问安全地保留在防火墙后面的Web服务。这与从应用程序服务器连接到数据库服务器时的操作类似。

如果有帮助,请告诉我。

答案 1 :(得分:5)

我将陈述我的答案希望解决的问题:

  1. 假设您在其他计算机上托管服务,问题是您为潜在攻击者提供这些计算机的名称/地址。

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

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

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

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

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

    1. 它隐藏了托管您服务的机器的实际IP。
    2. 您可以轻松锁定该网络服务器并监控异常活动。如果您看到活动激增,则可能会关闭Web服务。 (如果你使用不同的机器,你必须监控两个盒子。这不是一个大问题,但更容易监控一个。)
    3. 您可以轻松地在代理中放置分布式缓存层。这可以保护您免受加载/拒绝服务(DoS)攻击,并且显然支持正常的Web服务流量。
    4. 您可以在代理级别隐藏身份验证。公共电话不会背叛您的身份验证方案。否则,攻击者可以看到您使用的令牌,密钥或秘密或其他内容。在Web服务器上创建代理会隐藏该信息。数据仍会流过,但您可以再次监控它。
    5. 我认为真正的好处是它减少了应用程序的表面区域,从而缩小了攻击者可以做的范围。

答案 2 :(得分:2)

由于您引用ASP.Net,因此知道它的viewstate可以轻松解密。没有防止故障的方法来保护您的代码(更不用说被称为网址)。 如果您使用某些可以允许不受限制且危险的操作的参数调用Web服务,那么您最好开始使用某些用户/角色/权限管理。

如果你担心"男人在中间"攻击,你最好的选择是使用https。