我从aspx页面的脚本标签内部调用.asmx服务。当我查看页面源代码时,它显示的是我的When服务。
如何保护How服务不被暴露?因为当有人查看页面源代码时,他可以看到web服务名称以及它的所有方法名称。
.aspx页面:
<asp:PlaceHolder ID="divBody" runat="server">
<div class="aa-dashboard-wrapper">
<asp:Textbox id="textbox1" runat="server"></asp:Textbox>
</div>
</asp:PlaceHolder>
这是我的script标记,它放在我的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>
发布于 2014-08-27 17:31:49
虽然您无法阻止用户查看您的服务的URL,但您可以阻止他们查看该服务的文档-只需将其放入web.config
的system.web
标记中即可
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
请参阅“删除文档协议”中的https://support.microsoft.com/en-us/kb/815149。
发布于 2014-08-27 17:32:22
最好的方法是有一个JS文件,并将AJAX调用放在那里。即使在这种情况下,用户也可以浏览和查看JS,但机会很小。
发布于 2014-08-27 17:35:06
对于想要找到它的人来说,没有办法完全隐藏您的API端点。即使你在一些javascript结构中混淆了对它的调用,它在Chrome web检查器中仍然是可见的。在最基本的层面上,当我用包嗅探器拦截通信时,我仍然可以看到它。
https://stackoverflow.com/questions/25523416
复制相似问题