Pour le mot de passe:
Le mot de passe 'azerty' est dans un premier temps transformé avec une clef défini par le développeur.
Avec la clef
$config['KeyPassword'] = '1234';
le mot de passe base64_encode devient "lauXpaiq" mais avec
$config['KeyPassword'] = 'ABCD';
le mot de passe devient "pbuntbi6". Et c'est cette transformation qui est transformé.
Le SHA1 du mot de passe devient avec KeyPassword à "1234":
155186363668e3697b107f5096398514223a7ace
Le SHA1 du mot de passe devient avec KeyPassword à "ABCD":
0b10ddbe8e99261e5caa58c77d58e121f5ad8cb5
Donc ce n'est pas en ayant accès une liste SHA1 des mots de passe que l'on pourra retrouver un mot de passe, il faudra aussi hacker le serveur pour obtenir la valeur de et recréer une liste de mots de passe hashé SHA1. Non ?
https://korben.info/une-liste-de-15-...-de-passe.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| /**
* Encrypt password
* Avoid using sha1 directly
*/
function hash_password($string) {
global $config;
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($config['KeyPassword'], ($i % strlen($config['KeyPassword']))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
echo base64_encode($result).'<br>';
return sha1($result);
} |
Je ne vois pas comment on peut faire un brute force avec un accès aux mots de passe hashé de cette fonction. Moi j'en serais incapable.
Libre au développeur de modifier cette fonction selon ces besoins. Elle se trouve tout simplement dans le fichier global.inc.php.
Le nombre de fonction est astronomique, pourtant j'ai fait au minimum et le plus clairement possible. Exemple des variables et fonctions pour afficher la page de contact:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| init_langVars(['Contact', 'Global']);
$page = 'contact-us';
$cssFiles = get_cssFiles(['navbar', 'main', 'contact']);
$jsFiles = get_jsFiles(['global']);
$cssPlugins = [];
$jsPlugins = [];
$headerTitle = lg('Contact Form', NULL, FALSE);
$headerDesc = 'Meta Description of the contact page ';
show_header();
show_navbar();
show_contact();
show_end(); |
Et la fonction show_contact se trouve dans le fichier contact_display.inc.php, tout simplement.
Le code sql est toujours en amont puis j'appelle les fonctions d'affichage pour avoir un affichage le plus rapide possible, sauf dans la partie Admin/Home...désolé !
Pour le HTML / JS, on peut aussi créer des fichiers JS et les charger dans le DOM avec la fonction
$jsFiles = get_jsFiles(['global']);
. Moi je préfère utiliser les variables PHP pour les insérer dans le DOM directement !
Oui, on peut ajouter dans global.inc.php une boucle contrôlant les valeurs de $_GET. Laquelle en particulier, celle-là par exemple est bien contrôlée?
1 2 3 4
| if(isset($_GET['do']) && ($_GET['do'] == 'passch') ){
$jsDocumentReady .= '
$("#ModalPasswordRecover").modal("show");';
} |
Les standards actuels sont faits pour devenir obsolètes dans qqs années au grand dam des clients mais pour le grand bien des commerciaux!
Partager