我有一个从 jQuery 调用中获取数据的公共 Web 服务。因为我网站的用户是公众,他们不需要登录和认证。我最近注意到一个 bot 似乎反复调用这个 Web 服务,它正在刺激我的服务器数据库。我不确定如何最好地防止恶意用户向我的 Web 服务发送垃圾邮件,但仍然保持服务打开并且不需要身份验证。我想我可以将密码发送到 Web 服务,并且仅在密码存在时才执行数据库调用,但是因为我的 JavaScript 代码调用该服务,所以恶意行为者只需查看源代码并复制密码就足够容易了.人们通常如何处理这个问题?我的代码示例如下:
Javascript:
return $.ajax({
url: '/MyWebService.asmx/GetAllMetaData',
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
var obj = $.parseJSON(data.d);
//do stuff with the data
},
complete: function () {
$('#LoadingData').hide();
}
});
MyWebService.asmx
<System.Web.Script.Services.ScriptService()>
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")>
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<ToolboxItem(False)>
Public Class MyWebService
Inherits System.Web.Services.WebService
<WebMethod()>
Public Function GetAllMetaData() As String
Dim MetaData As New SearchMetaData
MetaData.SomeField = DatabaseCallFunction()
MetaData.AnotherField = DatabaseCallFunctionTwo()
Dim serilaizedString As String = JsonConvert.SerializeObject(MetaData, Formatting.Indented)
Return serilaizedString
End Function
End Class