2009-11-14 71 views
1

我想開發我的登錄腳本,如果登錄有效或沒有給用戶反饋。基本上,如果它不正確,div盒會顯示錯誤,如果它正確,它將顯示其有效並重定向到成員頁面。ajax使用httpRequest登錄?

這是安全的將它發送到PHP腳本..檢查數據庫,然後PHP腳本或者返回一個真或假的值?

這樣的事情?

function check_login(username, password) 
{ 
var httpRequest; 
make_request() 
function stateck() 
{ 


    if(httpxml.readyState==4) 

    { 
     if (httpxml.responseText.indexOf("true") >= 0) 
     { 
     $("#valid_div").show(); 
     $("#invalid_div").hide(); 

     } 
     else 
     { 
     $("#invalid_div").show(); 
     $("#valid_div").hide(); 

     } 


    } 
    } 

httpxml.onreadystatechange=stateck; 
login_url="login/login.php?username=" + username.value + "password=" + password.value; 
httpxml.open("GET",login_url,true); 
httpxml.send(null); 
} 

我打算添加一個SSL證書,所以我認爲這將是安全的?

感謝

回答

2

如果login_url您使用的是通過HTTPS那麼它是安全的。但爲了進一步提高安全性,您可以考慮使用POST發送usernamepassword,而不是通過GET請求將它們連接到url。

var parameters = 'username=' + username.value + '&password=' + password.value; 
httpxml.onreadystatechange = stateck; 
httpxml.open('POST', 'login/login.php', true); 
httpxml.setRequestHeader('Content-Type', "application/x-www-form-urlencoded"); 
httpxml.setRequestHeader('Content-Length', parameters.length); 
httpxml.send(parameters); 
+2

由於這是Ajax,用戶無法查看URL,因此在這種情況下使用GET和POST之間沒有安全性差異。只有掃描網絡流量的人才會看到請求。 – Matijs 2009-11-14 12:29:50

+4

掃描網絡流量的人是非常真實的安全問題。 – 2009-11-14 12:31:44

+5

@Martijs,客戶端和服務器之間的所有代理服務器都會在其日誌中包含GET URL,這是一個安全問題。 **從不**在GET請求中發送用戶名和密碼。 – 2009-11-14 12:32:52

0

LOGIN_URL = 「?登錄/用戶名的log​​in.php =」 + username.value + 「密碼=」 + password.value;

不,它不安全likethis。您需要使用POST而不是Get來發送(目前您正在使用GET)。

4

首先,使用HTTP POST。任何掃描網絡流量的人都可以看到GET的內容,並且無論SSL如何,通常都存儲在日誌,緩存和代理中。

爲傳播後,使用SSL會增加安全性,但仍存在根據您的設置的其他無數的孔:

  • 鹽您的密碼,以避免發送或在任何時候清楚地存儲起來。
  • 確保您的數據庫安全。
  • 確保您不會泄露太多有效/無效的信息。
  • 防範蠻力攻擊...

不勝枚舉和...

+0

謝謝,一旦登錄頁面被驗證,用戶會在會話的每個頁面上再次檢查,並且這些值是否與數據庫匹配。所以這可能會增加安全 – Elliott 2009-11-14 12:48:34

1

爲什麼每個人都在這裏是說POST是更安全的使用通過HTTPS時比得到什麼?

即使您正在進行GET也不會公開發送網址,在第一步中,瀏覽器在端口443上打開一個到服務器的安全通道,其他所有內容都被加密,包括GET部分。

不能被嗅探。我錯過了什麼嗎?