2009-11-14 9 views
1

J'essaie de développer mon script de connexion pour donner un retour à l'utilisateur si la connexion est valide ou non. Fondamentalement, si ce n'est pas correct, une boîte de div montrera ce qui ne va pas, si c'est correct, il montrera son valide et rediriger vers une page des membres. Est-ce que cela serait sécurisé en l'envoyant à un script php ... en vérifiant avec la base de données, alors le script php renvoie une valeur true ou false?Ajax connexion en utilisant httpRequest?

Quelque chose comme ça?

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); 
} 

Je prévois d'ajouter un certificat SSL, donc je suppose que ce serait sécurisé?

Merci

Répondre

2

Si le login_url vous utilisez est HTTPS alors il est sécurisé. Mais pour augmenter encore la sécurité, vous pouvez envisager d'envoyer le username et le password avec POST au lieu de les concaténer à l'URL avec une requête GET.

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

Comme il s'agit d'Ajax et que l'utilisateur ne voit pas l'URL, il n'y a pas de différence de sécurité entre l'utilisation de GET et de POST dans ce cas. Seules les personnes analysant le trafic réseau verront la demande. – Matijs

+4

Les personnes qui analysent le trafic réseau constituent un problème de sécurité très REEL. –

+5

@Martijs, tous les serveurs proxy entre le client et le serveur auront des URLs GET dans leurs logs ce qui est un problème de sécurité. ** Jamais ** envoyez un nom d'utilisateur et un mot de passe dans une requête GET. –

0

login_url = "login/login.php nom d'utilisateur =" + username.value + "password =" + password.value;

Non, ce n'est pas sécurisé. Vous devez envoyer ceci en utilisant POST au lieu de Get (actuellement vous utilisez GET).

4

Tout d'abord, utilisez un HTTP POST. Le contenu de GET est visible par tous ceux qui analysent le trafic réseau et qui sont souvent stockés dans des journaux, des caches et des proxys, quel que soit le protocole SSL.

Pour la transmission POST, en utilisant SSL augmenterait la sécurité, mais il y a encore d'innombrables trous en fonction du reste de votre configuration:

  • sel vos mots de passe pour éviter d'envoyer ou de les stocker clairement à tout moment.
  • Assurez-vous que votre base de données est conservée en toute sécurité.
  • Assurez-vous de ne pas donner trop d'informations avec vos réponses valides/invalides.
  • protection contre les attaques par force brute ...

la liste est longue et ...

+0

Merci, une fois que la page de connexion a été validée, l'utilisateur est à nouveau vérifié sur everypage pour la session et si les valeurs correspondent à la base de données. Donc, cela devrait augmenter la sécurité – Elliott

1

Pourquoi tout le monde ici dit POST est plus sûr que GET quand il est utilisé via HTTPS?

même si vous faites GET l'URL n'est jamais envoyée à l'extérieur, dans la première étape, le navigateur ouvre un canal sécurisé au serveur sur le port 443 et tout le reste est crypté, y compris la partie GET.

Ne peut être reniflé. Est-ce que je manque quelque chose?