保护Web服务的最少侵入式方法?

时间:2009-02-03 15:39:35

标签: asp.net javascript ajax web-services security

我正在维护一个公共网站(无需授权),该网站使用基于https的Web服务来执行各种操作。大多数对Web服务的调用都是从javascript调用的。

最近发生的事情是,如果他/她选择,恶意黑客可以直接调用网络服务,企图破坏系统。

实际上,他们没有太大的伤害,但在实践中这些事情很难预测。

请记住,Web服务调用将以javascript代码(可供客户端使用)公开,我可以使用哪种方法来防止未经授权和/或恶意访问Web服务。

可悲的是,我不能仅限制IP访问,因为有基于Windows窗体的客户端应用程序,它们也与Web服务进行交互。

使用Windows身份验证可能很困难,因为这些客户端应用程序可以在世界上任何地方运行,并且用户不属于任何特定AD组 - 甚至不属于此类域。

我很感激任何建议,记住两种不同的访问类别和javascript代码的曝光。

2 个答案:

答案 0 :(得分:3)

有权使用该javascript的恶意用户可以轻松模仿javascript调用的任何内容。我建议修改页面以使用更多的服务器端解决方案。将AJAX留给不易被利用的东西。

防止未经授权的用户比支持完全公共访问更容易。如果你将用户的cookie上的时间过期的guid删除,该用户的cookie与作为Web服务的参数之一发送的单个用户相关联,那么你应该为应用程序提供一个额外的,通常难以破解的层。 / p>

任何有权执行javascript的人都可以毫不费力地将它拼凑在一起。无法访问javascript的人可能无法轻易访问Web服务。

答案 1 :(得分:2)

需要做一些工作,但如果您的页面也是ASP.net,则可以设置共享会话,打开Web服务上的EnableSession属性并使用会话数据来保护会话。可以在此处找到概述:http://blogs.lessthandot.com/index.php/WebDev/ServerProgramming/ASPNET/sharing-asp-net-session-state-between-we

这将需要为您的Windows应用程序使用不同的“服务版本”。