jQuery ajax 安全性

Pin*_*kie 3 jquery

我有以下 ajax 调用,它检查用户是否是付费会员,如果是,则相应地运行某些功能。这可行,但我担心安全性。如果有人在控制台中更改此 ajax 代码,强制#button成功运行功能而无需执行任何操作,该怎么办?我可以在仍然使用 jQuery ajax 的同时阻止这种情况吗?

$('#button').click(function() {
    $.ajax({
        url:'checkplan',
        type:'POST',
        success:function(data){
            if(data == 'paid')
                //grant access and run some functions
    }
})
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

最终,您的服务器需要始终强制执行正确的身份验证。您不能依赖客户端来强制执行任何操作,因为它总是可能受到损害(如果不在您的网页中,则在自定义构建的网页中)。因此,当您登录时,您的服务器需要返回某种令牌或设置一个包含某种令牌的 cookie,并且只有具有该令牌或 cookie 的服务器的未来请求才应得到尊重。

您可以使用客户端中的逻辑向用户呈现更好的界面(仅在经过身份验证后显示他们登录的操作,显示适当的登录或注销选项等...),但您不能使用客户实际提供安全保障。

许多 REST API 都有一个返回 sessionID 的登录方法,并且所有其他 API 请求都需要该 sessionID。然后,服务器检查每个请求的 sessionID,以查看它是否适用于有效的登录用户,并查看它是否仍然有效(如果不定期使用,sessionID 通常仅在一段时间内有效)。

许多 Web 应用程序使用 cookie,以便将来的所有页面视图和表单提交都能够向服务器显示它们已正确登录并经过身份验证,因为 cookie 中存在适当的 sessionID。