【问题标题】:How do I hide .asmx webservice API endpoint in source code?如何在源代码中隐藏 .asmx webservice API 端点?
【发布时间】:2014-10-20 19:37:09
【问题描述】:

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

如何保护网络服务不被暴露? 因为当有人查看页面源代码时,他可以看到 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 页面的底部。

    $("#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>

【问题讨论】:

  • Web 服务是从用户的浏览器通过 ajax 请求调用的,如果它没有公开,你希望它如何工作?
  • 我可以编码它的名字吗?这样他可能看不到 asmx 服务名称?
  • 最终用户的浏览器正在向您的 Web 服务发出 http 请求,即使您混淆了端点,用户所要做的只是启动浏览器开发工具或使用诸如提琴手之类的东西,他们可以查看请求。你想隐藏什么?为什么用户可以看到您的 Web 服务的端点很重要?如果用户对服务进行自己的调用存在问题,那么您的 Web 服务存在根本的安全问题。
  • 这真的很有帮助!谢谢! @BenRobinson
  • 如果您提供有关您要保护的内容的更多详细信息以及为什么我可以提供更有用的建议。您可以采取一些步骤来确保您的 Web 服务尽可能安全,例如您可以将安全令牌存储在 cokkie 中,然后根据已知值检查该安全令牌,这有助于通过确保请求是由您网站上的用户而不是其他恶意网站发出的请求来防止 XSRF 漏洞:-)

标签: c# asp.net web-services asp.net-ajax


【解决方案1】:

虽然您无法阻止用户查看您的服务的 URL,但您可以阻止他们查看相关文档 - 只需将其放在您的 web.configsystem.web 标记中

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

请参阅 https://support.microsoft.com/en-us/kb/815149 关于“删除文档协议”

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      没有办法对想要找到它的人完全隐藏您的 API 端点。即使您在某些 javascript 构造中以某种方式混淆了它的调用,它仍然会在 Chrome 网络检查器中可见。而且在最基本的层面上,当我用数据包嗅探器拦截通信时,我仍然可以看到它。

      【讨论】:

        猜你喜欢
        • 2017-03-12
        • 1970-01-01
        • 1970-01-01
        • 2018-03-15
        • 1970-01-01
        • 2023-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多