C# 如何在源代码中隐藏.asmxwebservice API端点?

C# 如何在源代码中隐藏.asmxwebservice API端点?,c#,asp.net,web-services,asp.net-ajax,C#,Asp.net,Web Services,Asp.net Ajax,我正在从aspx页面的内部脚本标记调用.asmx服务。当我查看页面源代码时,它会显示我的Web服务 如何保护Web服务不被暴露? 因为当有人查看页面源代码时,他可以看到web服务名称以及它的所有方法名称 .aspx页面: <asp:PlaceHolder ID="divBody" runat="server"> <div class="aa-dashboard-wrapper"> <asp:Textbox id="textbo

我正在从aspx页面的内部脚本标记调用.asmx服务。当我查看页面源代码时,它会显示我的Web服务

如何保护Web服务不被暴露? 因为当有人查看页面源代码时,他可以看到web服务名称以及它的所有方法名称

.aspx页面:

<asp:PlaceHolder ID="divBody" runat="server">
        <div class="aa-dashboard-wrapper">
            <asp:Textbox id="textbox1" runat="server"></asp:Textbox> 
        </div>
</asp:PlaceHolder>
这是我的脚本标签,它位于我的aspx页面的底部。


虽然您不能阻止用户查看您服务的URL,但您可以阻止他们查看您服务的文档-只需将其放入web.config的system.web标记中即可


请参见“删除文档协议”

当您无法阻止用户查看您的服务的URL时,您可以阻止他们查看您的服务的文档-只需将其放入web.config的system.web标记中即可


请参见“删除文档协议”

最好的方法是拥有一个JS文件并将AJAX调用放在那里。即使在这种情况下,用户也可以浏览和查看JS,但机会很少。

最好的方法是拥有一个JS文件,并在那里调用AJAX。即使在这种情况下,用户也可以浏览和查看JS,但机会很少。

没有办法对想要找到它的人完全隐藏API端点。即使您在某些javascript构造中混淆了对它的调用,它仍然可以在ChromeWebInspector中看到。在最基本的层面上,当我截获与数据包嗅探器的通信时,我仍然可以看到它。

没有办法对想要找到它的人完全隐藏API端点。即使您在某些javascript构造中混淆了对它的调用,它仍然可以在ChromeWebInspector中看到。在最基本的层面上,当我截取与数据包嗅探器的通信时,我仍然可以看到它。

通过ajax请求从用户的浏览器调用web服务,如果它没有公开,您希望它如何工作?我可以编码它的名称吗?这样他可能看不到asmx服务名称?最终,用户的浏览器会向您的web服务发出http请求,即使您混淆了端点,用户所要做的就是启动浏览器开发工具或使用类似fiddler的工具,他们就能看到请求。你想隐瞒什么?为什么用户可以看到web服务的端点很重要?如果用户自己设计对服务的调用是一个问题,那么web服务就有一个基本的安全问题。这真的很有帮助!谢谢@Benrobinsoni如果你能提供更多关于你想要获得什么的细节,以及为什么我能提供更多有用的建议。您可以采取一些步骤来确保web服务尽可能安全,例如,您可以将安全令牌存储在cokkie中,然后根据已知值检查该安全令牌,这有助于防止XSRF漏洞,确保请求是由用户在您的网站上提出的,而不是其他邪恶的网站:-使用ajax请求从用户的浏览器调用web服务,如果它未公开,您希望它如何工作?我可以对其名称进行编码吗?这样他可能看不到asmx服务名称?最终,用户的浏览器会向您的web服务发出http请求,即使您混淆了端点,用户所要做的就是启动浏览器开发工具或使用类似fiddler的工具,他们就能看到请求。你想隐瞒什么?为什么用户可以看到web服务的端点很重要?如果用户自己设计对服务的调用是一个问题,那么web服务就有一个基本的安全问题。这真的很有帮助!谢谢@Benrobinsoni如果你能提供更多关于你想要获得什么的细节,以及为什么我能提供更多有用的建议。您可以采取以下步骤来确保您的web服务尽可能安全,例如,您可以将安全令牌存储在cokkie中,然后根据已知值检查该安全令牌,这有助于防止XSRF漏洞,方法是确保用户在您的网站而不是其他邪恶网站上发出请求:-
    $("#textbox1").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '<%=ResolveUrl("~/WebService.asmx/webServiceMethod") %>',
                        data: "{ 'keyword': '" + request.term + "'}",
                        dataType: "json",
                        timeout: 20000,
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                        },
                        error: function (response) {

                        },
                        failure: function (response) {

                        }
                    });
                },
                select: function (e, i) {

                },
                minLength: 2
            })

</script>
<webServices>
    <protocols>
        <remove name="Documentation" />
    </protocols>
</webServices>