11
votes

Script de connexion facile sans base de données

Comment créer un script de connexion facile qui ne nécessite pas de base de données. J'aimerais que cela soit sûr.

D'accord, qu'en est-il de ce script, je viens de le faire par mes connaissances en php. P> xxx pré>

Le Safe_Site.php contient ceci et Quelques contenus: P>

session_start();

if (!isset($_SESSION["inloggning"]) || $_SESSION["inloggning"] !== true) {
header("Location: login.php");
exit;
}


7 commentaires

Comment créeriez-vous un script de connexion facile qui ne nécessite pas de base de données dans ASP?


Maintenant, qu'en est-il de mon exemple que j'ai ajouté dans le premier post ci-dessus ici.


@Elijah: Vous voulez que tous les utilisateurs utilisent le même nom d'utilisateur / mot de passe?


Non, pas vraiment vraiment, mais maintenant j'ai vu que Mark a posté une solution rapide et sale et je l'utilise maintenant! Merci tout le monde pour votre aide, j'apprécie votre temps.


@Elijah: la marque de solution fournie est bien si vous n'êtes qu'une petite liste d'utilisateurs. Cette solution ne va pas très bien échelonner.


@Jonathan a accepté. Ma solution ne serait raisonnable que comme un wrapper rapide autour d'un très petit nombre de pages avec des utilisateurs pas très nombreux. N'importe quoi avec beaucoup d'utilisateurs ou d'informations d'utilisateur qui change aurait souvent besoin de quelque chose de plus robuste.


Look ici et Here


10 Réponses :


0
votes

Si vous n'avez pas de base de données, vous devrez coder les informations de connexion dans votre code ou le lire à partir d'un fichier plat sur le disque.


2 commentaires

Je ne peux pas stocker les détails de connexion dans les variables?


Vous pouvez, c'est ce qu'il veut dire par "Hardcode les détails de connexion de votre code."



4
votes

Enregistrez le nom d'utilisateur et le mot de passe en matrice dans un fichier PHP au lieu de dB.

Lorsque vous devez authentifier l'utilisateur, calculez les haubes de ses informations d'identification, puis les comparez à hayes dans la matrice.

Si vous utilisez une fonction de hachage sécurisée (voir Fonction de hachage et algos hachage Dans la documentation PHP), il devrait être assez sûr (vous pouvez envisager d'utiliser un hachage salé) et ajouter des protections à la forme elle-même.


0 commentaires

2
votes

Si vous n'avez pas de base de données, où l'enregistrement permanent des données de connexion de vos utilisateurs sera-t-il stocké? Bien sûr, alors que l'utilisateur est connecté, les informations utilisateur minimales requises pour que votre site fonctionne puissent être stockées dans une session ou un cookie. Mais après leur déconnexion, alors quoi? La session disparaît, le cookie peut être piraté.

Donc, votre utilisateur revient sur votre site. Il essaie de se connecter. Quelle chose digne de confiance de votre site comparativement à ses informations de connexion?


0 commentaires

11
votes

FacebookConnect ou OpenID sont deux excellentes options.

Fondamentalement, vos utilisateurs se connectent à d'autres sites qui sont déjà membres de (Facebook ou Google), puis vous obtenez une confirmation de ce site vous indiquant que l'utilisateur est digne de confiance - Démarrer une session et ils sont connectés. Non Base de données nécessaire (sauf si vous souhaitez associer plus de données à leur compte).


1 commentaires

développeurs.facebook.com/connect.php URL montre maintenant "Désolé, le Le lien que vous avez suivi peut être cassé ou la page peut avoir été supprimée. " - il devrait être supprimé.



24
votes

Ce n'est pas une solution idéale mais voici un exemple rapide et sale qui montre comment vous pouviez stocker les informations de connexion dans le code PHP:

<?php
session_start();

$userinfo = array(
                'user1'=>'password1',
                'user2'=>'password2'
                );

if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
}

if(isset($_POST['username'])) {
    if($userinfo[$_POST['username']] == $_POST['password']) {
        $_SESSION['username'] = $_POST['username'];
    }else {
        //Invalid Login
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Login</title>
    </head>
    <body>
        <?php if($_SESSION['username']): ?>
            <p>You are logged in as <?=$_SESSION['username']?></p>
            <p><a href="?logout=1">Logout</a></p>
        <?php endif; ?>
        <form name="login" action="" method="post">
            Username:  <input type="text" name="username" value="" /><br />
            Password:  <input type="password" name="password" value="" /><br />
            <input type="submit" name="submit" value="Submit" />
        </form>
    </body>
</html>


4 commentaires

Merci! C'est peut-être meilleur que le mien.


Le stockage des mots de passe en texte brut est généralement considéré comme dangereux.


La seule façon que quiconque va voir ces mots de passe est si le serveur Web cesse d'analyser PHP. Et puis vous aurez un problème plus important sur vos mains :) il cherche juste quelque chose de rapide et facile.


Serveur ne doit pas arrêter d'analyser PHP, lorsqu'il y a une autre vulnérabilité en application (il y en a toujours au moins un :)), que l'attaquant sera en mesure de lire les mots de passe d'autres personnes sans personne connaître et qui est un gros problème que vous mentionné. Peu d'appels de fonction SHA1 ne tueront personne et ce sera plus sûr.



0
votes

Vous pouvez effectuer le contrôle d'accès au niveau du serveur Web à l'aide d'une authentification de base HTTP et HTPASSWD . Il y a un certain nombre de problèmes avec ceci:

  1. Ce n'est pas très sécurisé (nom d'utilisateur et mot de passe sont codés trivialement sur le fil)
  2. Il est difficile de maintenir (vous devez vous connecter au serveur pour ajouter ou supprimer des utilisateurs)
  3. Vous n'avez aucun contrôle sur la boîte de dialogue de connexion présentée par le navigateur
  4. Il n'y a aucun moyen de vous déconnecter, de redémarrer le navigateur.

    Sauf si vous construisez un site pour une utilisation interne avec peu d'utilisateurs, je ne le recommanderais pas vraiment.


0 commentaires

-4
votes

Il n'y a aucune raison de ne pas utiliser la base de données pour la mise en œuvre de la connexion, le moins que vous puissiez faire est de télécharger et d'installer SQLite si votre société d'hébergement ne vous fournit pas assez de dB.


0 commentaires

8
votes

Je voudrais utiliser une configuration de deux fichiers comme ceci:

index.php xxx

login.php xxx < / p>


0 commentaires

1
votes

Script de connexion *** qui ne correspond pas à une base de données ou à un fichier externe. Bon pour un mot de passe global -

Placez sur la page de formulaire de connexion - Placez ceci en haut de la page de connexion - au-dessus de tout le reste *** xxx

* Connectez-vous sur les pages suivantes - Placez ceci en haut de chaque page qui doit être protégée par la connexion. Cela vérifie la session et si un nom d'utilisateur et un mot de passe ont * xxx


1 commentaires

Cette solution n'est-elle pas la même chose que celle qui est déjà dans la question initiale?



1
votes

Essayez ceci: xxx

Vous aurez besoin d'une déconnexion, quelque chose comme ceci (logout.php): xxx


1 commentaires

Frank, belle réponse - Cependant, la question avait été répondue et la réponse a été acceptée. Si vous voulez expliquer pourquoi votre réponse est différente ou meilleure que la réponse acceptée, cela pourrait aider.