2017-06-20 97 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

我會閱讀其他人在考慮使用會話進行驗證時所寫的文檔。謝謝! –