用户登录后如何使用AJAX验证用户?

时间:2017-06-20 02:36:36

标签: javascript ajax verification

我是一个用javascript AJAX创建网站的新手。我想在我的网站上提供一个域名(如Facebook)的每一次体验,因此我使用javascript AJAX进行了每个页面更改方法。首先,当您访问我的网站时,您必须登录,然后转到主页面,您可以通过点击按钮进入多个菜单,触发更改页面的方法。

我遇到的问题是......我最近看到有人在控制台中键入了javascript代码,删除了Tumblr上的所有(或她)照片,而不是点击所有这些。这个想法让我头疼。

我的网站中的每个页面更改方法也可以在不登录的情况下调用。有人可以在控制台中输入改变页面的javascript代码而无需登录,并查看页面内容。

第一个想法来防止这种情况发生,每次当我向服务器发出请求并且每次服务器获得请求时发送id / pw,服务器检查id / pw以将浏览器分配给改变页面。例如,当用户想要去菜单A时,他(或她)必须发送他(或她)的id / pw来查看菜单A的内容。

我认为这是一个糟糕的主意。因为我猜想当服务器总是要检查id和pw时,它会导致服务器CPU过载(对不起,我不太了解服务器CPU和进程,这只是我的假设)。所以我想还有另一种方法来验证用户及其请求,而不是每次都发送id / pw。

有人知道吗?或者我应该检查每个帖子请求的id / pw吗?

2 个答案:

答案 0 :(得分:0)

是的,在无状态方案中,您应该发送一些客户端标识,如令牌并在服务器上进行验证。不要担心性能:)

你可以看看JWT:https://jwt.io/

答案 1 :(得分:0)

要回答您,您正在谈论跨站点脚本。让我首先向您指出一些文件,以便让您了解您正在处理的内容: -

它称为Cross Site Scripting,客户端的用户使用该脚本在您的网站中注入脚本并更改其中的不同内容。

https://en.wikipedia.org/wiki/Cross-site_scripting

现在要处理这些问题,有以下补救措施: -

  1. CSRF Token
  2. JWT
  3. 它们都以相同的方式工作,但 JWT 中有数据和有效载荷承载能力和加密,我建议这样做。 这是社区中一个非常着名的问题,也很老了。

    另一方面,我还建议您在将数据存储到数据库之前进行数据清理。有人可以在你的网站上轻松输入一些JS,你很快就会被污损。

    看看这个Sanitizing user input before adding it to the DOM in Javascript

    最后但并非最不重要。在编写JavaScript时停止公开全局级别的函数。停止创建全局变量和函数,而不是使用闭包。

    (function(){
     var a =10;
     var b = 20;
     
     function add(msg){
      console.log(msg)
      return a+b;
     }
     
     add("I am calling from Inside the self executing function");
    })();
    
     add("I am calling from outside the self executing function");

    查看上面的代码以及它如何保护从外部调用add()方法。

    希望这能回答你的问题。