Alternative API
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

Aller en bas
IBurningTV
IBurningTV
Messages : 1
Date d'inscription : 08/05/2020
Age : 25
Localisation : Entre deux lignes de code

Launcher [Tuto] Authentification liée a son site (hors auth Mineweb)

Ven 8 Mai - 16:59
-{ Authentification liée à son site (hors auth Mineweb) : }-


Ce tutoriel a pour but de vous montrer comment lier la base de données de votre site à votre launcher

1) Création du Script PHP :



On va crée un fichier que l'on va appeler Auth.php et on l'ouvre avec notre Éditeur de texte


Voici le Script :
Code:
<?php

if (isset($_GET['pseudo']) && isset($_GET['mdp']))

{
    $bd_nom_serveur = 'localhost';
    $bd_login = 'LOGIN'; //Le login de la BDD
    $bd_mot_de_passe = 'PASSWORD'; //Le mot de passe de la BDD
    $bd_nom_bd = 'NAME'; //Le Nom de la BDD

  
    $link = mysqli_connect($bd_nom_serveur, $bd_login, $bd_mot_de_passe,  $bd_nom_bd);


    mysqli_select_db($link, $bd_nom_bd); //Ne pas toucher
    mysqli_query($link, 'set names \'utf8\'');//Ne pas toucher
    $pseudo = $_GET['pseudo']; //Ne pas toucher
    $mdp = $_GET['mdp']; //Ne pas toucher

    $sql = 'SELECT PASSWORD_COLUMN FROM TABLE WHERE PSEUDO=\'' . $pseudo . '\''; //SELECT motdepasse FROM table WHERE pseudo

    $sql = mysqli_query($link, $sql); //Ne pas toucher
    $result = mysqli_fetch_array($sql);  //Ne pas toucher

    if ($result['PASSWORD_COLUMN'] != '') //Indiquer la colonne du MDP
    {

        $mdp = hash('sha256', $mdp);// Indiquer la Fonction de cryptage utiliser - MD5 / SHA256 / SHA512

        if ($result['PASSWORD_COLUMN'] == $mdp)//Indiquer la colonne du MDP
        {
            echo "Response : YES";
        }

        else
        {
            echo "Response : NO";

        }
    }

    else
    {
        echo "Response : NOREGISTER";
    }
}

else
{
    echo "Response : Impossible de se connecter";
}

?>


je vous ai mis des commentaires pour vous aider mais voici quelque explication: 

Code:
    $bd_login = 'LOGIN'; //Le login de la BDD
    $bd_mot_de_passe = 'PASSWORD'; //Le mot de passe de la BDD
    $bd_nom_bd = 'NAME'; //Le Nom de la BDD
Je pense qu'il n'y a pas besoin d'expliquer ceci et que tout le monde comprend ce qu'il faut mettre ^^

Code:
 $sql = 'SELECT PASSWORD_COLUMN FROM TABLE WHERE PSEUDO=\'' . $pseudo . '\'';

A cette ligne a la place de PASSWORD_COLUMN il faut indique la colonne qui contient le mot de passe des utilisateur
A la place de TABLE il faudra indiquer dans quelle table se situent les informations que l'on cherche
et enfin a la place de PSEUDO il faudra indiquer la colonne qui contient le pseudo des utilisateur 

 - Si vous vous demandez à quoi correspond une colonne ou encore une table je vous invite à regarder ces Image :

    > Trouver sa table : ICI 
    > colonne: ICI


Donc maintenant vous savez ce qu'est votre table et votre colonne, Si je suis mes Images cela donnerait : 
Code:
$sql = 'SELECT password FROM users WHERE pseudo=\'' . $pseudo . '\'';

Ensuite vous devrez ré-indiquer votre Colonne mot de Passe à plusieurs endroit :
Code:
 if ($result['ICI'] != '')
     ........
  if ($result['ICI'] == $mdp)


Le Script est Maintenant terminer, Vous n'avez plus qu'a le mettre sur le FTP ou vous avez votre site.


imaginons j'ai crée un Dossier auth et que j'ai mis mon fichier auth.php dedans.
Si je vais donc sur MONSITE.fr/auth/auth.php le script affichera : Response : Impossible de se connecter

pour tester le Script il suffit d'ajouter a la fin de l'url
Code:
?pseudo=UnPseudoDansVotreBDD&mdp=leMDPduCompte


avec l'exemple ci dessus cela donnerait
Code:
MONSITE.fr/auth/auth.php?pseudo=UnPseudoDansVotreBDD&mdp=leMDPduCompte



vous obtiendrez : Response : YES si les identifiant sont correct
                          Response : NO  si les identifiant sont incorrect
                     Response : NOREGISTER  si les identifiant sont tout simplement inconnu de la BDD


Et nous en avons Fini avec la Partie PHP.


2) Ajout au launcher


Dans votre classe LauncherPanel tout en haut déclarer la variable qui permettra de stocker la réponse du script :  

Code:
private String result;


ensuite direction votre Bouton de Connexion, pour changer sons action.

supprimer : 
Code:
this.loginButton.setOnAction(new EventHandler<ActionEvent>() {
 
 @Override
 public void handle(ActionEvent event) {
 usernameSaver.writeUsername(usernameField.getText());
 /**
 * ===================== AUTHENTIFICATION OFFLINE (CRACK) =====================
 */
 if (usernameField.getText().length() < 3) {
 new LauncherAlert("Authentification echouee",
 "Il y a un probleme lors de la tentative de connexion: Le pseudonyme doit comprendre au moins 3 caracteres.");
 } else if (usernameField.getText().length() > 3 && passwordField.getText().isEmpty()) {
 GameAuth auth = new GameAuth(usernameField.getText(), passwordField.getText(),
 AccountType.OFFLINE);
 if (auth.isLogged()) {
 update(auth);
 }
 }
 /** ===================== AUTHENTIFICATION OFFICIELLE ===================== */
 else if (usernameField.getText().length() > 3 && !passwordField.getText().isEmpty()) {
 GameAuth auth = new GameAuth(usernameField.getText(), passwordField.getText(),
 AccountType.MOJANG);
 if (auth.isLogged()) {
 update(auth);
 } else {
 new LauncherAlert("Authentification echouee!",
 "Impossible de se connecter, l'authentification semble etre une authentification 'en-ligne'"
 + " \nIl y a un probleme lors de la tentative de connexion. \n\n-Verifiez que le pseudonyme comprenne au minimum 3 caracteres. (compte non migrer)"
 + "\n-Faites bien attention aux majuscules et minuscules. \nAssurez-vous d'utiliser un compte Mojang.");
 }
 } else {
 new LauncherAlert("Authentification echouee!",
 "Impossible de se connecter, l'authentification semble etre une authentification 'hors-ligne'"
 + " \nIl y a un probleme lors de la tentative de connexion. \n\n-Verifiez que le pseudonyme comprenne au minimum 3 caracteres.");
 }
 }
 });

et ajouté : 
Code:
this.loginButton.setAction(ce -> {
   usernameSaver.writeUsername(this.usernameField.getText());

   if(!this.passwordField.getText().isEmpty() && !this.usernameField.getText().isEmpty()){
      //Authentification
      try {
         //URL of Php Script for Authentification
         URL url = new URL("URL_DE_VOTRE_SCRIPT_PHP?pseudo="
               + this.usernameField.getText()
               + "&mdp="
               + this.passwordField.getText());

         URLConnection urlConnection = url.openConnection();
         urlConnection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0");
         InputStream inputStream = urlConnection.getInputStream();
         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

         for (String line; (line = bufferedReader.readLine()) != null; ) result = line;
         System.out.println(result); //test la variable result

         if (result.equalsIgnoreCase("Response : NO")) { //Incorect Login
            new LauncherAlert("Echec lors de l'authentification", "Le pseudo / mot de passe utilisé est incorrect");
         } else if (result.equalsIgnoreCase("Respone : NOREGISTER")) { //Unregistered Login
            new LauncherAlert("Compte inexistant", "Veuillez vous enregistrer sur le site Officiel : " + "VOTRESITE.fr");
         } else if (result.equalsIgnoreCase("Response : YES")) {//Good Login
            GameAuth gameAuth = new GameAuth(this.usernameField.getText(), this.passwordField.getText(), AccountType.OFFLINE);
            update(gameAuth);
         }

      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }else if(this.passwordField.getText().isEmpty() || this.usernameField.getText().isEmpty()){
      new LauncherAlert("Erreur de saisie", "Vous n'avez pas rempli les deux champs requis (Nom d'utilisateur / mot de passe)");
   }
});
Encore deux petite chose a modifier : 
Code:
URL url = new URL("URL_DE_VOTRE_SCRIPT_PHP?pseudo="

Mettre l'url du script php si je reprend mon exemple sa serait : 
Code:
URL url = new URL("MONSITE.fr/auth/auth.php?pseudo="

et modifier l'alerte si un joueur n'est pas inscrit sur votre site : 

Code:
new LauncherAlert("Compte inexistant", "Veuillez vous enregistrer sur le site Officiel : " + "VOTRESITE.fr");



Voila votre Launcher est relier a la base de donné de votre site, 
les utilisateur devront obligatoirement s'inscrire sur votre site pour utiliser votre Launcher.

Fire_Blaim aime ce message

avatar
Lockface77
Messages : 4
Date d'inscription : 20/01/2021

Launcher Re: [Tuto] Authentification liée a son site (hors auth Mineweb)

Jeu 21 Jan - 16:53
Bonjour,

Ce code comprend des énormes failles SQL:

Code:
$sql = 'SELECT PASSWORD_COLUMN FROM TABLE WHERE PSEUDO=\'' . $pseudo . '\'';


Il ne faut JAMAIS conquaténer un input utilisateur dans une requète sql, il suffit qu'un utilisateur envois une requette avec un psuedo du style: \'; DROP ALL TABLES; -- et tout la dabase tombe il me semble.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum