2009-11-14 84 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部分。

不能被嗅探。我错过了什么吗?