如何确保使用jQuery AJAX发送到WebService的数据是通过我的网站而不是一些攻击

我的代码:

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 } 

如何确保使用jQuery AJAX发送到WebService的数据是通过我的网站而不是一些攻击。

我对Login有一个类似的ajax调用,我将userid和密码传递给webservice并进行身份validation。

有没有办法让一次性请求 – 响应令牌,以确保其有效的Web服务调用。

如果我的问题不明确,请告诉我。

您可以使用哈希密钥(仅为您知道)实现轻量级MAC-ing机制

  1. 在每次调用webservice之前,将消息有效负载的前n个字节提供给散列键并计算散列值。
  2. 调用您的web服务,在http标头中发送哈希值(我建议使用授权标头 ,您可以创建自定义标头。
  3. 在您的Web服务中,在遵守任何服务请求之前,您可以通过使用相同的数据(即前N个字节)计算哈希值来validation消息的真实性,并与授权头中的哈希值进行比较。 仅在值检出时尊重请求。

这里有一些处理开销,它假设传输是通过安全线路进行的,否则,消息仍然可能被劫持。 但是你解决了虚假电话的问题。

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

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

    Interesting Posts