【发布时间】: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