我从aspx页面的脚本标签内部调用.asmx服务。当我查看页面源时,它显示我的web服务。如何在源代码中隐藏.asmx webservice API端点?
如何保护webservice免受暴露? 当有人查看页面源时,可以看到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请求,如果它没有公开暴露,你期望它的工作? – 2014-08-27 09:29:35
我可以编码它的名字吗? 由此他可能看不到asmx的服务名称? – 2014-08-27 10:13:14
最终,用户的浏览器正在向您的Web服务发出http请求,即使您混淆了终点,用户所需做的只是启动浏览器开发工具或使用像fiddler这样的东西,并且他们可以看到请求。你想隐藏什么?为什么用户可以看到Web服务的端点很重要?如果用户构建他们自己的服务调用是一个问题,那么您的Web服务存在根本性的安全问题。 – 2014-08-27 10:18:45