2009-07-13 7 views
6

J'ai essayé d'établir une connexion sécurisée pour mon site que je suis en train de développer.Connexion sécurisée

Je ne peux tout simplement pas le faire fonctionner, j'utilise les bases de données MySQL avec PHP.

Je peux faire le formulaire pour ajouter l'utilisateur et leurs informations à la base de données, mais je n'arrive pas à le faire fonctionner avec le login.

Quel type de cryptage est utilisé avec HTML <input type="password">?

Comment conserver l'utilisateur connecté pendant sa visite sur mon site?

Comment puis-je vérifier en toute sécurité si c'est le bon mot de passe qui correspond au nom d'utilisateur?

Je fais PHP depuis peut-être un an maintenant, je n'ai pas encore appris cette partie, donc ce serait bien de savoir.

+1

Vous ne savez pas pourquoi vous avez reçu un downvote. +1 –

Répondre

11

Quel type de cryptage est utilisé avec type d'entrée html < = mot de passe> ??

Aucune. L'entrée est juste masquée pour protéger contre les attaques "Regarder le moniteur".

Si vous voulez de la sécurité, transmettez vos données via HTTPS (HTTP avec SSL).

Comment puis-je garder l'utilisateur connecté pendant sa visite sur mon site?

La plupart des gens utilisent des cookies.

Comment vérifier en toute sécurité si c'est le bon mot de passe qui correspond au nom d'utilisateur?

Sécurisé?

N'utilisez pas de serveur partagé. Suivez les étapes normales pour sécuriser les données sur ce serveur. Stocker les mots de passe comme des hachages, pas comme du texte brut.

Vérifiez?

Convertissez le mot de passe soumis en hachage correspondant, puis comparez comme d'habitude. En supposant que vous stockez les données dans une base de données, sélectionnez simplement FROM FROM users WHERE user =? ET mot de passe =? et compte le nombre de lignes que vous récupérez.

+6

+1 pour "Regarder le moniteur" attaque –

+0

Ainsi, un serveur partagé inclurait-il les bases de données MySQL fournies par Godaddy? aussi comment puis-je faire mon site Web https au lieu de http, cela implique-t-il ssl? – techy

+0

Je ne peux pas commenter l'installation des systèmes Godaddy. J'ai entendu assez d'histoires d'horreur au sujet de cette compagnie pour ne jamais les approcher. Pour utiliser HTTPS, vous achetez un certificat SSL, puis l'installez ... et comment cela dépend de votre serveur. – Quentin

2

Je vais aborder la partie de la protection par mot de passe de votre question.

Il n'y a pas de cryptage intégré avec le type d'entrée de mot de passe. Le navigateur le soumettra en texte brut comme tout le reste. Il y a deux façons de protéger le mot de passe.

La première est de configurer un challenge/response system mais cela nécessitera que Javascript fonctionne. Fondamentalement, vous prenez le mot de passe de l'utilisateur, appliquez une fonction de hachage si c'est la façon dont il est stocké sur le serveur, puis vous prenez un jeton de défi serveur et salez la valeur du mot de passe pour un nouveau hachage. Le serveur prendra sa valeur du mot de passe et appliquera également le défi. S'ils correspondent, le mot de passe est correct et il n'y a aucun moyen de savoir quel est le mot de passe.Cela nécessite javascript parce que le hachage doit être produit du côté client si cette approche doit être efficace.

Une autre option, plus simple, consiste à exiger des HTTP pour la partie de connexion du site.

+0

+1 pour la méthode challenge/réponse. – Residuum

1

Comme David l'a dit, il n'y a pas de chiffrement des mots de passe par défaut, utilisez https pour garder le chiffrement.

Pour garder votre utilisateur connecté, sur la page de connexion, vérifiez son mot de passe par rapport à ce qui est stocké dans la base de données. Vous devez hacher vos mots de passe et stocker le mot de passe haché dans la base de données (voir crypt). puis, lorsque l'utilisateur se connecte, hachez le mot de passe de l'utilisateur et comparez-le au mot de passe haché dans la base de données. Quand ils correspondent, se connecter, sinon la connexion échoue. Si votre base de données est compromise, au moins, ils n'ont pas les mots de passe.

Pour garder l'utilisateur connecté, après avoir vérifié le mot de passe, définir une variable dans la session, à savoir

$_SESSION[loggedin] = true. 

Sur chaque demande, cochez cette variable de session, et s'il est vrai, permettre l'accès à la page, si elle est fausse, rediriger l'utilisateur vers la page de connexion avec un

header("Location: /login.php"); 
0

entrées de mot de passe ne sont pas chiffrés. Si vous ne souhaitez pas stocker de mots de passe en clair (tels que renvoyés par le formulaire), vous devez exécuter l'une des nombreuses fonctions fournies par php et mysql. consultez md5 de php, sha1, ou encrypt de mysql pour stocker les mots de passe. Puis, pour vérifier s'ils ont entré le mot de passe correct pour se connecter, vous pouvez utiliser n'importe quelle méthode de chiffrement sur leur entrée, récupérer le mot de passe haché de la base de données et les comparer. (En outre, regardez dans salting passwords)

Pour avoir une session de connexion persistante, vous pouvez utiliser la variable $_SESSION de php. ou setcookie()