Web services 如何确保使用jqueryajax发送到WebService的数据是通过我的站点发送的,而不是通过某种攻击

Web services 如何确保使用jqueryajax发送到WebService的数据是通过我的站点发送的,而不是通过某种攻击,web-services,jquery,security,cryptojs,Web Services,Jquery,Security,Cryptojs,我的代码: function HandleSignUp() { var CurrentURL = document.URL; var obj, val; //ajax call started $.ajax({ type: "POST", url: "../../webservice/GetAjaxDataWebService.asmx/RegisterNewUser", data: "{'UserFullName

我的代码:

 function HandleSignUp() {
    var CurrentURL = document.URL;
    var obj, val;
    //ajax call started
    $.ajax({
        type: "POST",
        url: "../../webservice/GetAjaxDataWebService.asmx/RegisterNewUser",
        data: "{'UserFullName': '" + $('#SignUpName').val() + "','Email': '" + $('#SignUpEmail').val() + "','Password': '" + $('#SignUpPassword').val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            //msg.d contains the return value from web service call
            $.colorbox.close();

            val = eval(msg);
            obj = jQuery.parseJSON(val.d);

            UpdateLogin(obj.Email, obj.FirstName);

        }
    });
    //ajax call ended
}
如何确保使用jqueryajax发送到WebService的数据是通过我的站点发送的,而不是通过某种攻击

我对登录有一个类似的ajax调用,在这里我将用户ID和密码传递给Web服务并进行身份验证

有没有办法使用一次性请求-响应令牌来确保它是有效的web服务调用


如果我的问题不清楚,请告诉我。

您可以使用哈希键(只有您知道)实现一种轻量级MAC机制

  • 在每次调用webservice之前,将消息负载的第一个
    n
    字节馈送到哈希键并计算哈希值
  • 调用您的Web服务,在http头中发送哈希值(我建议,您可以创建自定义头tho)
  • 在您的Web服务中,在接受任何服务请求之前,请使用相同的数据(即前N个字节)计算哈希值,并与授权标头中的哈希值进行比较,以验证消息的真实性。仅当值签出时才接受请求

  • 这里有一点处理开销,它假设传输是通过安全线路进行的,否则,消息仍然可能被劫持。但您可以解决伪调用的问题。

    会话可能是解决此问题的最简单方法,具体取决于您的服务器框架


    成功登录后,在服务器上打开一个会话并设置一个值;在处理任何其他web服务API之前检查会话值。

    如果您没有启用服务器的cors,客户端脚本可能无法向您的服务发送请求。@AkshatJiwanSharma我没有跨源资源共享启用服务器上的led。因此,我不必担心有人会编写一个实用程序,用虚假数据调用我的注册Web服务URL,并用暴力攻击任何特定用户ID的密码登录Web服务URL?@Pawan您可以在HMAC部分下查找您可以使用的内容。我的代码中有会话管理。但我只创建会话我上面的问题是如何避免虚假的web服务调用。从您的观点来看,我考虑始终创建一个唯一的会话密钥(可能是用户请求对象的时间戳和信息)并在响应中将其传递到我的HTML页面,然后再次通过web服务调用获取此会话有效负载。如果来自web服务调用的有效负载与我的会话密钥匹配,我将允许web服务继续。对于所有人,请让我知道这是否是一个有效选项。