我知道这个问题可能过于笼统,但为了缩小问题,这里有一个简短的描述:
我打算忘记ASP.net UpdatePanel
并转而通过JQuery使用ajax。我担心由于JavaScript的简单客户端性质(以及JQuery代码),任何看我的网页源代码的人都可以意识到我正在调用的Web服务的URL是什么以及传递的是什么那些网络服务。
当使用UpdatePanel
进行这些类型的操作时,我确信调用Web服务是在服务器端完成的,我不关心调用敏感Web服务公开公开的信息问题,但现在我打算通过JQuery使用Ajax,这让我很担心。
我的担忧是否合理,是否真实,哪些是避免网络服务呼叫信息受到威胁的最佳解决方案?
澄清:在谈到UpdatePanel时,我的意思是利用一系列技术,包括ASP.net AJAX,代码隐藏和依赖服务器端Dll来执行异步服务器端操作而不是jquery Ajax这需要Web服务来与服务器进行交互。
答案 0 :(得分:6)
互联网无法通过隐藏URL来始终保护您的Web服务。我不确定当你说你的updatepanel从服务器上调用web服务时你没有采用AJAX的真正威力。
保护Web服务的一种方法是在Web服务端使用身份验证。例如,每次访问源时都需要发送一些身份验证密钥,这很常见,你有很多公共Web服务使用auth密钥(如OpenId实现)自我保护。如果您不想更改Web服务逻辑,我认为AJAX的jquery方式不是一个安全选项。
这是一个想法,你可以有两个级别的web服务,一个将打开你可以在jquery中使用的所有。从当前的Web服务,从服务器端调用其他安全的Web服务。即使是现在,您也可以配置某些特定计算机IP的传入请求。
在这种情况下,除了您自己的服务器之外,没有其他人可以访问安全地保留在防火墙后面的Web服务。这与从应用程序服务器连接到数据库服务器时的操作类似。
如果有帮助,请告诉我。
答案 1 :(得分:5)
我将陈述我的答案希望解决的问题:
假设您在其他计算机上托管服务,问题是您为潜在攻击者提供这些计算机的名称/地址。
攻击者可以编写脚本/漫游器来抓取您的数据。
攻击者可以专注于您的网络服务,并尝试攻击他们/获得对您网络的访问权。
攻击者可以尝试在您的网络服务上执行DoS / DDoS。
我过去使用的解决方案是在Web服务器上创建一个轻量级代理,以便所有AJAX调用只需指向当前域。然后,当一个呼叫进入时,它只是被路由到适当的Web服务,该服务托管在网络内部的某个地方。
它在网络上创建了一个额外的跃点,但它也有这些好处:
我认为真正的好处是它减少了应用程序的表面区域,从而缩小了攻击者可以做的范围。
答案 2 :(得分:2)
由于您引用ASP.Net,因此知道它的viewstate可以轻松解密。没有防止故障的方法来保护您的代码(更不用说被称为网址)。 如果您使用某些可以允许不受限制且危险的操作的参数调用Web服务,那么您最好开始使用某些用户/角色/权限管理。
如果你担心"男人在中间"攻击,你最好的选择是使用https。