Sinon tu trouveras d'autres excellents livres sur le sujet dans la langue de Shakespeare par l'éditeur APress (apress.com).
++
raidersteam
Messages postés13Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention 7 mai 2010 24 sept. 2008 à 03:59
et dans mon ca mon script fontionne sur mon site de test.
mes il y a tu un site un livre quelquep par ou il parle de la pluspar des probleme de Sécurité.
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 24 sept. 2008 à 01:45
Aie aie aie !!! D'une part ton code ne marche pas et d'autre part la sécurité est en carton. Je m'explique.
1/ Ca ne marche pas à cause de la première ligne : $_GET['lang'] = '$lang';
Il y'a effectivement deux erreurs rien que dans cette ligne de code. La première est l'inversion des deux variables. C'est bien entendu la variable $lang qui doit être à gauche et le $_GET à droite. De plus, tu ne maîtrises pas la signification des simples quôtes. Le code que tu nous montres placer dans la variable $_GET['lang'] la valeur '$lang' et non la valeur de la variable $lang (qui n'existe pas). Enfin, il n'y a aucune sécurité sur les paramètres reçûs de l'utilisateur.
2/ Sécurité faillibe. Tu injectes sans crainte la variable $lang dans tes includes sans l'avoir préablement testée, filtrée et validée. Tu risques donc d'ouvrir aux hackers des accès dérobés sur ton serveur grâce aux failles includes. Au final ton code corrigé et sain donnerait quelque chose comme ceci :
// Test de la langue demandée : existe + 2 caractères de longueur + valeur présente dans le tableau $aCultures
if(!empty($_GET['lang']) && 2 === strlen($_GET['lang']) && in_array($_GET['lang'], $aCultures)) {
$sCulture = $_GET['lang'];
}
raidersteam
Messages postés13Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention 7 mai 2010 24 sept. 2008 à 00:44
Ji avais pas pencer ma corriger sa pour demain.
willeraser
Messages postés55Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention 6 mai 2009 23 sept. 2008 à 23:30
1°) wtf ???
2°) wtf ???
Détails :
1°) pourquoi tu fais 2 inclusions ? l'une est protégée (la 2ème) mais la 1ère... ? D'autant que le dossier ne porte pas le même nom (include et includes)
c'est pas très clair
2°) c'est quoi l'accolade après le else ? php va te sortir un "unexpected {" ou un truc du genre
sinon à part ça, beh niveau utilité c'est boaf boaf, tu aurais pu rajouter quelques exemples avec des define dans les fichiers de langue pour montrer comment faire =)
24 sept. 2008 à 09:10
Ca m'étonne énormément rien qu'au niveau de la première ligne.
>> mes il y a tu un site un livre quelquep par ou il parle de la pluspar des probleme de Sécurité.
Parmi les références tu as l'excellent livre de Philippe Gamache et Damien Séguy : "Sécurité PHP 5 /MySQL" aux éditions Eyrolles.
http://www.editions-eyrolles.com/Livre/9782212121148/securite-php-5-et-mysql
Sinon tu trouveras d'autres excellents livres sur le sujet dans la langue de Shakespeare par l'éditeur APress (apress.com).
++
24 sept. 2008 à 03:59
mes il y a tu un site un livre quelquep par ou il parle de la pluspar des probleme de Sécurité.
24 sept. 2008 à 01:45
1/ Ca ne marche pas à cause de la première ligne : $_GET['lang'] = '$lang';
Il y'a effectivement deux erreurs rien que dans cette ligne de code. La première est l'inversion des deux variables. C'est bien entendu la variable $lang qui doit être à gauche et le $_GET à droite. De plus, tu ne maîtrises pas la signification des simples quôtes. Le code que tu nous montres placer dans la variable $_GET['lang'] la valeur '$lang' et non la valeur de la variable $lang (qui n'existe pas). Enfin, il n'y a aucune sécurité sur les paramètres reçûs de l'utilisateur.
2/ Sécurité faillibe. Tu injectes sans crainte la variable $lang dans tes includes sans l'avoir préablement testée, filtrée et validée. Tu risques donc d'ouvrir aux hackers des accès dérobés sur ton serveur grâce aux failles includes. Au final ton code corrigé et sain donnerait quelque chose comme ceci :
<?php
$aCultures = array('fr','en','de','it');
$sCulture = $aCultures[0];
// Test de la langue demandée : existe + 2 caractères de longueur + valeur présente dans le tableau $aCultures
if(!empty($_GET['lang']) && 2 === strlen($_GET['lang']) && in_array($_GET['lang'], $aCultures)) {
$sCulture = $_GET['lang'];
}
if(file_exists(dirname(__FILE__).'/includes/' .$sCulture. '-global.php')) {
require(dirname(__FILE__).'/includes/' .$sCulture. '-global.php');
} else {
require(dirname(__FILE__).'/includes/fr-global.php');
}
?>
++
24 sept. 2008 à 00:44
23 sept. 2008 à 23:30
2°) wtf ???
Détails :
1°) pourquoi tu fais 2 inclusions ? l'une est protégée (la 2ème) mais la 1ère... ? D'autant que le dossier ne porte pas le même nom (include et includes)
c'est pas très clair
2°) c'est quoi l'accolade après le else ? php va te sortir un "unexpected {" ou un truc du genre
sinon à part ça, beh niveau utilité c'est boaf boaf, tu aurais pu rajouter quelques exemples avec des define dans les fichiers de langue pour montrer comment faire =)