【问题标题】:Secure jsonp ajax calls安全的 jsonp ajax 调用
【发布时间】:2013-07-15 23:10:38
【问题描述】:

我开发了返回 jsonp 对象的 Restful Web-Service。我在使用 Ajax 调用的简单 HTML 页面中使用此 Web 服务。意味着在客户端只有 HTML 页面可以访问这个 Web 服务。客户端不使用服务器。我只是运行这个页面浏览器。问题是任何人都可以访问我已经实现的这个 Web 服务。我想通过某种身份验证使其安全。我已经阅读了与请求一起发送令牌的解决方案,但在客户端我没有任何服务器或任何东西,它只是一个简单的 HTML 页面。请帮助我提供一些解决方案来保护 Web 服务。

调用webseive的JavaScipt函数:

function calculatePremium(investmentAmount,month, premium)
{
var url = "http://192.1.200.107:8080/webresources/avestWebService/getPremium";
var payLoadData = {
    amount: $("#"+investmentAmount).val(),
    period: $("#"+month).val()
};

$.ajax({
    type: "GET",
    url: url,
    cache:false,             
    crossDomain:true,
    data: payLoadData,
    dataType: "jsonp",
    success: function (data,textStatus,jqXHR) {
        $("#"+premium).val(data.premium);
    },
    error: function (jqXHR,textStatus,errorThrown) {
        alert('Error occured');
    }
})
};

【问题讨论】:

    标签: java web-services rest jsonp


    【解决方案1】:

    使用 ajax 请求,您可以发送身份验证标头

    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Basic " + "username:password");
    },
    

    或插入身份验证数据:

    $.ajax({
        type: "GET",
        username: "user",
        password: "password",
        ....
    }
    

    但您必须自己在网络服务中处理身份验证。 或者您可以使用 var payLoadData 添加一些自定义身份验证数据,您可以使用 Web 服务检查这些数据。

    如果你不希望其他人拦截你的认证包,你也应该考虑在https下建立连接

    【讨论】:

    • 但问题是用户名和密码对客户端可见,因为它是用 JavaScript 硬编码的。所以任何人都可以访问网络服务。我想要对此进行适当的身份验证。
    • 所以您希望客户端在不让客户端找到它们的情况下发送身份验证数据?
    • 我并不完全确定您需要什么...。您想为客户提供一个网页,该网页可以访问您的网络服务。然后您允许他访问您的网络服务,而不允许他将访问权限授予其他人?在那种情况下,也许你可以只允许来自他的 IP 地址的连接,但他必须有一个静态的
    猜你喜欢
    • 2013-01-19
    • 2017-02-11
    • 2011-06-25
    • 1970-01-01
    • 2012-09-12
    • 2011-07-10
    • 1970-01-01
    • 2019-06-26
    • 2012-07-27
    相关资源
    最近更新 更多