[C#] Faites vos requêtes MySQL en passant par le PHP

Paradise GTP

Premium
Inscription
30 Juin 2013
Messages
4 262
Réactions
4 393
Points
20 855
RGCoins
37
1484424617-header.png


Salut :tchuss:.

1484424897-1.png

Dans ce tutoriel je vais vous montrer comment faire pour effectuer vos requêtes MySQL depuis votre application mais ceci sans forcément devoir mettre les informations de votre base de données dans le code source. En effet cette chose est plutôt pénible du fait que n'importe quelle personne en suivant un tutoriel peut décompiler votre logiciel et donc avoir toutes les informations de votre base de données


Pour ce faire on utilisera un script PHP , et depuis l'application on le sollicitera.


1484425423-2.png

Donc, on va commencer par créer un script PHP qui renseignera les informations de votre base de données
pour ceci voici le code :
Pensez à bien renseigner les variables si vous les laissez vides cela ne fonctionnera pas

PHP:
<?php
session_start();
$BDD_hote = '';
$BDD_bd = '';
$BDD_utilisateur = '';
$BDD_mot_passe = '';

try{
 
 $bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
 $bdd->exec("SET CHARACTER SET utf8");
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e){
 echo 'Erreur : '.$e->getMessage();
 echo 'N° : '.$e->getCode();
}
ini_set("dislay_errors",1);
error_reporting(0);
?>

Ensuite nous allons créer notre script de requête, à savoir que pour chaque requête il vous faudra un script mais vous verrez en C# c'est plus simple ::):
Voici le squelette du code à vous de mettre votre requête suivant vos envies pour ma part c'est pour une connexion .
PHP:
<?php

// 0 = Erreur de connexion
// 1 = Connexion réussite

include("config.php");

$username = $_GET['username'];
$password = $_GET['password'];


$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');
$req->execute(array(
    'username' => $username,
    'password' => $password));

$resultat = $req->fetch();

if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

?>

Je vais quand même vous expliquer un peu mon code.
PHP:
$username = $_GET['username'];
$password = $_GET['password'];

Ce sont vos variables qu'il faut modifier suivant vos requêtes il faut bien laisser en GET ce qui permettra que votre URL ressemble à ceci :
https://www.rivalslebg.fr/login.php?username=Ilesttrop&password=beau

Si par exemple c'est pour une inscription et que vous voulez demander le mail aussi vous avez par exemple cette variable à ajouter :
PHP:
$mail= $_GET['mail'];

Dans ce cas votre URL ressemblerait à ceci :
https://www.rivalslebg.fr/register.php?username=Ilesttrop&password=beau&[email protected]

Je pense que vous avez compris le principe si ce n'ait pas le cas contacter moi en MP je vous ferai une aide personnalisée ::):
PHP:
$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');

Ici c'est simple entre les " ' " vous mettez votre requête quand vous devez utiliser une variable vous mettez deux points devant et on le définit juste comme ceci :
PHP:
    'username' => $username,
    'password' => $password));

Ensuite on va passer à la partie surement la plus compliquer.
PHP:
if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

Si cela affiche 0 c'est que l'action de la requête ( par exemple la connexion ) n'a pas été validée donc pour l'exemple une mauvaise information dans les logins et si cela affiche 1 tout est bon ! ::):
Eviter de mettre des accents si vous ne mettez pas 1 et 0.

1484427267-3.png


Bon voila je vais faire simple pour ici car c'est simple, je vais toujours faire pour la connexion voici l'exemple de mon design très joli...

69a53824307ad14127e06ec4453802651.png


Vous devez ajouter la bibliothèque du System.Net :
Code:
using System.Net;

Puis le code dans notre bouton :
Code:
            string Reponse = new WebClient().DownloadString("https://www.rivalslebg.fr/login.php?username=" + textBox1.Text + "&password=" + textBox2.Text);
            if (Reponse == "0")
            {
                label1.Text = "Mauvais mot de passe !";
            }

            else if (Reponse == "1")
            {
                label1.Text = "Connexion réussite";
            }

            else
            {
                label1.Text = "WTF ?";
            }

Voilà vous devez modifier l'URL comme je vous ai expliqué dans la partie PHP, et aussi pas seulement afficher dans un label je pense pas cela soit le but ::):

Voici quelques captures d'écran :


f4d3c33f5b7388dc601152939849622a.png

bb6e04d87f24baee7185dedb69633435.png


1484425630-4.png


C# :

PHP :


Merci à @Rivals

 

Mathieu ?

IT Officer @STATION F
Premium
Inscription
19 Novembre 2016
Messages
1 247
Réactions
1 460
Points
12 310
RGCoins
0
1484424617-header.png


Salut :tchuss:.

1484424897-1.png

Dans ce tutoriel je vais vous montrer comment faire pour effectuer vos requêtes MySQL depuis votre application mais ceci sans forcément devoir mettre les informations de votre base de données dans le code source. En effet cette chose est plutôt pénible du fait que n'importe quelle personne en suivant un tutoriel peut décompiler votre logiciel et donc avoir toutes les informations de votre base de données


Pour ce faire on utilisera un script PHP , et depuis l'application on le sollicitera.


1484425423-2.png

Donc, on va commencer par créer un script PHP qui renseignera les informations de votre base de données
pour ceci voici le code :
Pensez à bien renseigner les variables si vous les laissez vides cela ne fonctionnera pas

PHP:
<?php
session_start();
$BDD_hote = '';
$BDD_bd = '';
$BDD_utilisateur = '';
$BDD_mot_passe = '';

try{
 
 $bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
 $bdd->exec("SET CHARACTER SET utf8");
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e){
 echo 'Erreur : '.$e->getMessage();
 echo 'N° : '.$e->getCode();
}
ini_set("dislay_errors",1);
error_reporting(0);
?>

Ensuite nous allons créer notre script de requête, à savoir que pour chaque requête il vous faudra un script mais vous verrez en C# c'est plus simple ::):
Voici le squelette du code à vous de mettre votre requête suivant vos envies pour ma part c'est pour une connexion .
PHP:
<?php

// 0 = Erreur de connexion
// 1 = Connexion réussite

include("config.php");

$username = $_GET['username'];
$password = $_GET['password'];


$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');
$req->execute(array(
    'username' => $username,
    'password' => $password));

$resultat = $req->fetch();

if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

?>

Je vais quand même vous expliquer un peu mon code.
PHP:
$username = $_GET['username'];
$password = $_GET['password'];

Ce sont vos variables qu'il faut modifier suivant vos requêtes il faut bien laisser en GET ce qui permettra que votre URL ressemble à ceci :
https://www.rivalslebg.fr/login.php?username=Ilesttrop&password=beau

Si par exemple c'est pour une inscription et que vous voulez demander le mail aussi vous avez par exemple cette variable à ajouter :
PHP:
$mail= $_GET['mail'];

Dans ce cas votre URL ressemblerait à ceci :
https://www.rivalslebg.fr/register.php?username=Ilesttrop&password=beau&[email protected]

Je pense que vous avez compris le principe si ce n'ait pas le cas contacter moi en MP je vous ferai une aide personnalisée ::):
PHP:
$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');

Ici c'est simple entre les " ' " vous mettez votre requête quand vous devez utiliser une variable vous mettez deux points devant et on le définit juste comme ceci :
PHP:
    'username' => $username,
    'password' => $password));

Ensuite on va passer à la partie surement la plus compliquer.
PHP:
if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

Si cela affiche 0 c'est que l'action de la requête ( par exemple la connexion ) n'a pas été validée donc pour l'exemple une mauvaise information dans les logins et si cela affiche 1 tout est bon ! ::):
Eviter de mettre des accents si vous ne mettez pas 1 et 0.

1484427267-3.png


Bon voila je vais faire simple pour ici car c'est simple, je vais toujours faire pour la connexion voici l'exemple de mon design très joli...

69a53824307ad14127e06ec4453802651.png


Vous devez ajouter la bibliothèque du System.Net :
Code:
using System.Net;

Puis le code dans notre bouton :
Code:
            string Reponse = new WebClient().DownloadString("https://www.rivalslebg.fr/login.php?username=" + textBox1.Text + "&password=" + textBox2.Text);
            if (Reponse == "0")
            {
                label1.Text = "Mauvais mot de passe !";
            }

            else if (Reponse == "1")
            {
                label1.Text = "Connexion réussite";
            }

            else
            {
                label1.Text = "WTF ?";
            }

Voilà vous devez modifier l'URL comme je vous ai expliqué dans la partie PHP, et aussi pas seulement afficher dans un label je pense pas cela soit le but ::):

Voici quelques captures d'écran :


f4d3c33f5b7388dc601152939849622a.png

bb6e04d87f24baee7185dedb69633435.png


1484425630-4.png


C# :

PHP :


Merci à @Rivals

Facilement bypassable avec une redirection grace au fichier host rediregeant vers un site "pigeon" ayant comme text 1. Mais sinon bon tuto pour les débutants :p
 

Paradise GTP

Premium
Inscription
30 Juin 2013
Messages
4 262
Réactions
4 393
Points
20 855
RGCoins
37
Facilement bypassable avec une redirection grace au fichier host rediregeant vers un site "pigeon" ayant comme text 1. Mais sinon bon tuto pour les débutants :p

Apres comme j'ai dis c'est pas le plus sécurisé mais toujours plus que avec les id dans le code ^_^
 

Phrezus

pull up
Premium
Inscription
29 Octobre 2016
Messages
540
Réactions
121
Points
636
RGCoins
0
Tu ne montre pas la partie phpMyAdmin ?
 

Swfq

Membre
Inscription
12 Juin 2013
Messages
146
Réactions
34
Points
2 406
RGCoins
0
Trop facile à bypass je préfère utiliser MongoDB
 

Iwaaqounet

Premium
Inscription
7 Août 2015
Messages
260
Réactions
46
Points
3 836
RGCoins
0
J'y arrive pas quand je fais connexion sa me met WTF ??
 

Urikens

Membre
Inscription
28 Août 2017
Messages
11
Réactions
2
Points
46
RGCoins
0
sqllite peut aussi être intéressant.
 
M

Membre578448

j'ai un probleme moi sur mon site sa n'affiche pas de 0 ou de 1


Édit : problème regler
 
Dernière édition par un modérateur:

Sir-_-MaGeLanD

★Programmeur || Reverseur
Premium
Inscription
25 Mai 2016
Messages
519
Réactions
52
Points
5 596
RGCoins
0
Normale que sa me redirige vers une page error 500 pourtant j'ai remplis tout les info de ma base ?
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
RGCoins
40
Normale que sa me redirige vers une page error 500 pourtant j'ai remplis tout les info de ma base ?
Active les erreurs PHP pour voir d'où vient ton problème.
Tu peux aussi nous donner ton code ici afin qu'on puisse t'aider
 

Sir-_-MaGeLanD

★Programmeur || Reverseur
Premium
Inscription
25 Mai 2016
Messages
519
Réactions
52
Points
5 596
RGCoins
0
Active les erreurs PHP pour voir d'où vient ton problème.
Tu peux aussi nous donner ton code ici afin qu'on puisse t'aider
C'etais le même que celui sur la page rgcomment faire un api
 

XeTechzZ

Premium
Inscription
8 Août 2013
Messages
1 792
Réactions
1 026
Points
16 231
RGCoins
0
1484424617-header.png


Salut :tchuss:.

1484424897-1.png

Dans ce tutoriel je vais vous montrer comment faire pour effectuer vos requêtes MySQL depuis votre application mais ceci sans forcément devoir mettre les informations de votre base de données dans le code source. En effet cette chose est plutôt pénible du fait que n'importe quelle personne en suivant un tutoriel peut décompiler votre logiciel et donc avoir toutes les informations de votre base de données


Pour ce faire on utilisera un script PHP , et depuis l'application on le sollicitera.


1484425423-2.png

Donc, on va commencer par créer un script PHP qui renseignera les informations de votre base de données
pour ceci voici le code :
Pensez à bien renseigner les variables si vous les laissez vides cela ne fonctionnera pas

PHP:
<?php
session_start();
$BDD_hote = '';
$BDD_bd = '';
$BDD_utilisateur = '';
$BDD_mot_passe = '';

try{

$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
$bdd->exec("SET CHARACTER SET utf8");
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

catch(PDOException $e){
echo 'Erreur : '.$e->getMessage();
echo 'N° : '.$e->getCode();
}
ini_set("dislay_errors",1);
error_reporting(0);
?>

Ensuite nous allons créer notre script de requête, à savoir que pour chaque requête il vous faudra un script mais vous verrez en C# c'est plus simple ::):
Voici le squelette du code à vous de mettre votre requête suivant vos envies pour ma part c'est pour une connexion .
PHP:
<?php

// 0 = Erreur de connexion
// 1 = Connexion réussite

include("config.php");

$username = $_GET['username'];
$password = $_GET['password'];


$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');
$req->execute(array(
    'username' => $username,
    'password' => $password));

$resultat = $req->fetch();

if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

?>

Je vais quand même vous expliquer un peu mon code.
PHP:
$username = $_GET['username'];
$password = $_GET['password'];

Ce sont vos variables qu'il faut modifier suivant vos requêtes il faut bien laisser en GET ce qui permettra que votre URL ressemble à ceci :
https://www.rivalslebg.fr/login.php?username=Ilesttrop&password=beau


Si par exemple c'est pour une inscription et que vous voulez demander le mail aussi vous avez par exemple cette variable à ajouter :
PHP:
$mail= $_GET['mail'];

Dans ce cas votre URL ressemblerait à ceci :
https://www.rivalslebg.fr/register.php?username=Ilesttrop&password=beau&[email protected]


Je pense que vous avez compris le principe si ce n'ait pas le cas contacter moi en MP je vous ferai une aide personnalisée ::):
PHP:
$req = $bdd->prepare('SELECT id FROM users WHERE username = :username AND password = :password');

Ici c'est simple entre les " ' " vous mettez votre requête quand vous devez utiliser une variable vous mettez deux points devant et on le définit juste comme ceci :
PHP:
    'username' => $username,
    'password' => $password));

Ensuite on va passer à la partie surement la plus compliquer.
PHP:
if (!$resultat)
{
    echo '0';
}
else
{
    echo '1';
}

Si cela affiche 0 c'est que l'action de la requête ( par exemple la connexion ) n'a pas été validée donc pour l'exemple une mauvaise information dans les logins et si cela affiche 1 tout est bon ! ::):
Eviter de mettre des accents si vous ne mettez pas 1 et 0.

1484427267-3.png


Bon voila je vais faire simple pour ici car c'est simple, je vais toujours faire pour la connexion voici l'exemple de mon design très joli...

69a53824307ad14127e06ec4453802651.png


Vous devez ajouter la bibliothèque du System.Net :
Code:
using System.Net;

Puis le code dans notre bouton :
Code:
            string Reponse = new WebClient().DownloadString("https://www.rivalslebg.fr/login.php?username=" + textBox1.Text + "&password=" + textBox2.Text);
            if (Reponse == "0")
            {
                label1.Text = "Mauvais mot de passe !";
            }

            else if (Reponse == "1")
            {
                label1.Text = "Connexion réussite";
            }

            else
            {
                label1.Text = "WTF ?";
            }

Voilà vous devez modifier l'URL comme je vous ai expliqué dans la partie PHP, et aussi pas seulement afficher dans un label je pense pas cela soit le but ::):

Voici quelques captures d'écran :

f4d3c33f5b7388dc601152939849622a.png

bb6e04d87f24baee7185dedb69633435.png


1484425630-4.png


C# :

PHP :


Merci à @Rivals
Sinon, il existe aussi les webservices avec .NET, et là tu peux faire des API Restful très facilement. Ah et au passage, c'est peu commun de mélanger du .NET avec du PHP.
 

XeTechzZ

Premium
Inscription
8 Août 2013
Messages
1 792
Réactions
1 026
Points
16 231
RGCoins
0
Facilement bypassable avec une redirection grace au fichier host rediregeant vers un site "pigeon" ayant comme text 1. Mais sinon bon tuto pour les débutants :p
Dans le cas d'une API, une redirection serait inutile, car tu n'aurais pas de token de connexion donc pas de modifications possibles vers la vraie API et donc la base de données. Un spoof avec le fichier host serait utile uniquement si l'application a juste besoin d'une authentification.
 
Haut