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

     2023-05-08     249

关键词:

【中文标题】使用 JQuery 调用 Web 服务时可能存在哪些威胁,如何避免?【英文标题】:What are the possible threats while calling web services by using JQuery and how can avoid them? 【发布时间】:2013-03-27 18:18:21 【问题描述】:

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

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

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

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

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

【问题讨论】:

“调用 Web 服务是在服务器端 [使用 UpdatePanel] 完成的”语句似乎是错误的,因为 UpdatePanel 也启用了客户端技术。我认为迁移到 jQuery 时威胁不会改变。如果您的 Web 服务已经是安全的,那么它们实际上不应更改。 对您的问题需要澄清的重要一点是:“我确信调用 Web 服务是在服务器端完成的”——这些 Web 服务是什么由 ASP.NET 自动创建,还是它们单独从服务器端专门/单独调用 Web 服务? 澄清:当说 UpdatePanel 时,我的意思是利用一系列技术,包括 ASP.net AJAX、代码隐藏和依赖服务器端 Dll 来执行异步服务器端操作,而不是需要 jquery Ajax用于吸引服务器的 Web 服务。 【参考方案1】:

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

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

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

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

如果这有帮助,请告诉我。

【讨论】:

【参考方案2】:

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

    假设您将服务托管在而不是 Web 服务器的计算机上,问题是您向潜在攻击者提供了这些计算机的名称/地址。

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

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

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

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

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

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

哪一个更适合 jQuery.ajax 调用? .Net Web 服务还是 .ashx?

】哪一个更适合jQuery.ajax调用?.NetWeb服务还是.ashx?【英文标题】:WhichoneisbetterforjQuery.ajaxcalls?.NetWeb-Serviceoran.ashx?【发布时间】:2011-07-2910:07:40【问题描述】:我最近一直在练习jQuery.ajax()。我已经开始学习调用.Netweb-servicesqithjQu... 查看详情

尝试发布数据时,使用 Jquery 调用 .Net Web 服务会导致问题

】尝试发布数据时,使用Jquery调用.NetWeb服务会导致问题【英文标题】:Calling.NetwebservicewithJqueryiscausingwoewhentryingtopostdata【发布时间】:2010-10-0408:09:34【问题描述】:以下代码在data键没有要发送的数据时正确执行,即data:""一个空... 查看详情

扩展从 JQuery 调用 Web 服务时从 ASP.NET 引发的异常

...JQuery【发布时间】:2010-10-2522:17:48【问题描述】:我正在使用JQuery在使用JSON和WebServices的ASP.NET开发环境中动态加载控件。在这个解决方案中,我有一个业务逻辑层,它具有内置的验证机制(即验证 查看详情

Asp.net Webservice - 使用 jquery AJAX 安全调用 Web 服务

】Asp.netWebservice-使用jqueryAJAX安全调用Web服务【英文标题】:Asp.netWebservice-SecurecallthewebservicewithjqueryAJAX【发布时间】:2013-07-0421:53:02【问题描述】:我想将Web服务与Ajax一起使用。使用ajax调用web服务时,安全性的最佳方法是什么... 查看详情

Jquery datatable 在从简单的 Web 服务调用 Web 方法时未在表中显示任何数据

...单的Web服务方法时,我在表中没有得到任何数据。我试图使用datatble插件将服务器端返回的数据放入jqu 查看详情

使用带有摘要身份验证、jquery ajax 调用的 RestFul PHP Web 服务

】使用带有摘要身份验证、jqueryajax调用的RestFulPHPWeb服务【英文标题】:ConsumeRestFulPHPwebservicewithdigestauth,jqueryajaxcall【发布时间】:2012-06-2719:04:36【问题描述】:我想知道如何使用摘要认证调用RestFulPHP网络服务?当我创建基本请... 查看详情

从 jQuery 调用 Web 服务

...【发布时间】:2012-06-1809:29:54【问题描述】:我正在尝试使用jQuery来使用我的Web服务,并且基本上只需要Web服务来调用函数就可以了。我在.NET中使用的代码是这样的:[ServiceContract(Namespace="http://Sinvise.Service/")]publicinterfaceISinvise[ 查看详情

如何使用 jQuery 调用 ASP.NET Web 服务?

】如何使用jQuery调用ASP.NETWeb服务?【英文标题】:HowtousejQuerytocallanASP.NETwebservice?【发布时间】:2010-09-1819:50:53【问题描述】:我正在尝试使用jQuery从ASP.NETWeb服务(SharePointServer2007lists.asmx)中获取数据,但任何对Web服务的调用都将... 查看详情

使用 jquery ajax jsonp 调用 web 服务:错误

】使用jqueryajaxjsonp调用web服务:错误【英文标题】:callingawebservicewithjqueryajaxjsonp:error【发布时间】:2015-01-0305:23:39【问题描述】:我正在尝试使用ajax调用web服务,我得到一个内部500错误。请你告诉我不确定我做错了什么,我可... 查看详情

如何使用 Web 服务和 jQuery Ajax 启用 CORS

】如何使用Web服务和jQueryAjax启用CORS【英文标题】:HowtoenableCORSwithWebServiceandjQueryAjax【发布时间】:2018-01-3106:35:57【问题描述】:我有一个WebService(.asmx)页面,其中包含许多我想从另一个网页运行的功能。我想使用ajax来调用函数... 查看详情

使用远程的 JQuery 验证将空数据发布到 Web 服务

】使用远程的JQuery验证将空数据发布到Web服务【英文标题】:JQueryValidationusingRemotepostsemptydatatowebservice【发布时间】:2011-02-0910:05:27【问题描述】:我正在使用JQuery验证插件。我正在使用远程选项调用我的网络服务以检查公司名... 查看详情

cors 无法从 jquery 调用 Web 服务

...cefromjquery【发布时间】:2013-04-0801:01:41【问题描述】:我使用axis2创建了一个Web服务,并使用eclipse部署在apachetomcat7中。这是我在Web服务中转换的类。这只是一个回声:packagetest.org;publicclassTestWSpublicStringecho(St 查看详情

打开 Windows 身份验证时使用 ajax 调用 Web 服务?

】打开Windows身份验证时使用ajax调用Web服务?【英文标题】:UsingajaxtocallawebservicewhenWindowsAuthenticationturnedon?【发布时间】:2010-10-0921:28:04【问题描述】:我正在尝试从javascript调用Web服务方法:functionSearch()varcontext=newObject;context.Fil... 查看详情

存在中止调用时触发 jQuery 的 ajaxStop 事件

...edcallsexist【发布时间】:2010-06-2804:27:42【问题描述】:我使用jQuery的ajaxSend和ajaxStop在ajax请求处于活动状态时显示微调器。它的工作原理是当我的一些插件中止他们的ajax请求时,ajaxStop不会触发,并且直到页面刷新后才会触发。... 查看详情

使用 jQuery jsonp 跨域调用到 ASP.NET Web 服务

】使用jQueryjsonp跨域调用到ASP.NETWeb服务【英文标题】:crossdomaincallwithjQueryjsonptoASP.NETwebservice【发布时间】:2012-02-1116:25:41【问题描述】:我的问题是已知问题并讨论了here和here。但即使在阅读并实施建议的解决方案后,我也无法... 查看详情

使用 Response.Write JSON 输出从 Jquery 调用 c# asmx Web 服务

】使用Response.WriteJSON输出从Jquery调用c#asmxWeb服务【英文标题】:Callingc#asmxwebservicefromJquerywithResponse.WriteJSONoutput【发布时间】:2017-04-0516:10:44【问题描述】:我有一个如下所示的c#asmxWeb服务代码。[WebMethod][ScriptMethod(UseHttpGet=true,Res... 查看详情

使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误

】使用JSON从AJAX和JQuery调用简单的Web服务(.asmx文件)-解析错误【英文标题】:Callingsimplewebservice(.asmxfile)fromAJAXandJQueryusingJSON-parseerror【发布时间】:2011-04-0817:04:29【问题描述】:迈出尝试将所有这些技术一起使用的第一步..我遇... 查看详情

使用 JQuery 访问 ASP.net Web 服务时出错 - JSONP

】使用JQuery访问ASP.netWeb服务时出错-JSONP【英文标题】:ErrorwhileaccessingASP.netwebserviceusingJQuery-JSONP【发布时间】:2010-10-1217:48:18【问题描述】:请查看下面的代码并帮助我找出我在Web服务代码中做错了什么。我想设置一个可以使用... 查看详情