2017-06-20 143 views
0

我完全新的做用JavaScript AJAX网站。我想提供一个领域(如Facebook)在我的网站上的每一个经历,因此我使用JavaScript AJAX制作了每个换页方法。起初,当你访问我的网站,你必须登录,之后则转为主要页面,你可以去几个菜单与按钮,点击触发页面变化的方法。如何在用户登录后使用AJAX验证用户?

我所面临的问题是..我最近看到有人键入javascript代码到控制台中删除所有的他(或她)的照片上的tumblr,而不是点击了这一切的。这个想法打了我的脑海。

每一页变化在我的网站也可以在不登录时调用的方法。有人可以在控制台中输入页面切换的JavaScript代码而无需登录并查看页面的内容。

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

我认为这是一个糟糕的主意。正如我想这将导致超载服务器CPU的时候,服务器总是要检查的ID和PW(对不起,我不知道还有有关服务器的CPU和过程,这只是我的猜想)。所以我想有另一种方式来验证用户和他们的请求,而不是每次发送id/pw。

有谁知道的?或者我应该检查每个帖子请求的ID/PW?

回答

0

回答你,你是在谈论跨站脚本。首先让我们指出一些文件,以便让你意识到你正在处理的是什么: -

它被称为跨站点脚本,使用它在客户端的用户在您的网站注入脚本并更改不同的东西它。

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

我们处理这样的事情也有补救措施如下: -

  1. CSRF Token
  2. JWT

他们都工作在一定程度上相同的方式,但也有数据和有效载荷承载能力和加密涉及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()方法。

希望这回答你的问题。

+1

CSRF用于有状态的应用程序。在这种情况下是一个API,所以CSRF将不会被使用 – brunocascio

+0

我会看看它。谢谢! –

+0

我阅读了文档,据我了解,这是一个黑客上传脚本到网​​站的问题,例如,一个表单,textarea。但是我正在考虑的是用户在Chrome中打开“开发人员工具”并键入javascript代码来执行该功能的问题。可以通过'停止在全球范围内暴露功能?'来解决它。我只想确认我了解的是否正确 –

0

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

你可以看看智威汤逊:https://jwt.io/

+0

我会阅读其他人在考虑使用会话进行验证时所写的文档。谢谢! –