include et securité

Mammouth du PHP | 558 Messages

11 nov. 2007, 18:15

je vient de lire une chose sur un site:
attention aux url dynamique avec include comme de nombreux site sont crée avec se systeme.
pesonnelement je prefere les urls fixes.
pense toujours a protegé l'utilisation de variable si vous utilisé des insertions de page via l'url.
les danges sont multiples listage des pages de votre site;
voir le code php directement sans interpretation.
un simple chiffre dans le dynamysme de l'url exemple.
au lieu de.

Code : Tout sélectionner

http://votresite.com/?page=accueil.php
en recupertion
 <?php $page = $GET[page] ; 
include("$page"); ?>
preferé ceci

Code : Tout sélectionner

http://votresite.com/?page=1
<?php
$page1 = intval($GET[page]) ; //rappelle l fonction intval ne laisse que des chiffres entier sinon cela renvoie 0
if($page1 = '1')
{
$page = 'accueil.php';
}
//faire de meme pour chaque page
include("$page"); ?>

ViPHP
ViPHP | 4039 Messages

11 nov. 2007, 18:20

Tu débarques toi hein =D>

Mais bon, on a beau répéter toujours la même musique, y'en a qui tomberont toujours dedans.. :-({|=
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 558 Messages

11 nov. 2007, 18:28

pourquoi dit tu cela?
si je prefere les url fixe c'est pour le referencement pas pour la securité en meme temps je vient de me rendre compte que je supprime une faille...
Modifié en dernier par hakazizi le 11 nov. 2007, 19:02, modifié 1 fois.

Mammouth du PHP | 19672 Messages

11 nov. 2007, 19:02

preferé ceci

Code : Tout sélectionner

http://votresite.com/?page=1
<?php
$page1 = intval($GET[page]) ; //rappelle l fonction intval ne laisse que des chiffres entier sinon cela renvoie 0
if($page1 = '1')
{
$page = 'accueil.php';
}
//faire de meme pour chaque page
include("$page"); ?>
D'abord, tu pourrais essayer de faire un peu attention à l'orthographe, c'est un peu catastrophique.

Ensuite sur ce bout de code, il reste un problème : une url paramétrée peut être manipulée : que se passera-t-il selon toi si on envoie un autre paramètre que "1" ?
Au lieu d'une structure if(), préfère un switch de façon à pouvoir définir une valeur par défaut, même si aucun paramètre n'est envoyé. Et dans ce cas, intval() devient inutile :
<?php
$page1 = isset($GET['page']) ? $GET['page'] : 1 ;
switch($page1)
{
    case 2:
        $page = 'autrepage.php';
        break;
    // etc....
    case 1:
    default:
        $page = 'accueil.php';
}
include($page);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 4039 Messages

11 nov. 2007, 19:12

pourquoi dit tu cela?
si je prefere les url fixe c'est pour le referencement pas pour la securité en meme temps je vient de me rendre compte que je supprime une faille...
Il doivent y avoir des centaines de sujets qui traitent de cette matière sur ce forum.. c'est la première chôse qu'on dit quand quelqu'un post un script avec cette faille..

et s'il n'y en avait de sujet qui en traite dans cette section, c'était une lacune, que tu viens de combler.

Au fait, ça s'élargit à toutes les variables (GET et POST) qu'on obient de l'utilisateur (injection sql etc..), sinon, c'est la galère assurée.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 558 Messages

11 nov. 2007, 19:25

t'inquiete je protege chaque post et chaque get y compris les cachés type="hidden".
ils sont tous protegé de differente maniere jecrois que j'ai tellement compliqué la securité de mon site que les hackers laisseron tombé pour sataqué a une proie plus "facile".
j'evite au maximum les guet en leur preferant les post.
voila ce que j'ai fait mon premier site en integral je suis parti de 0 pour ce site reste plus que les papiers a faire et enregistré le site a la cnil.
http://www.larosedelorient.com

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

11 nov. 2007, 19:38

voila ce que j'ai fait mon premier site en integral je suis parti de 0 pour ce site reste plus que les papiers a faire et enregistré le site a la cnil.
http://www.larosedelorient.com
aie... vaut mieux avoir une couleur de fond moins "voyante" comme le blanc par exemple :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 4039 Messages

11 nov. 2007, 20:34

Mince oui.. un retour de 15 ans en arrière pour tout ce que signifie "développement web"..

En même temps..
meta name="GENERATOR" content="Microsoft FrontPage 5.0"
J'espère que c'est une initiative propre, et pas une commande, je pleins celui qui aurait payé pour cela..

Si tu comptes faire du développement web ton métier, ou d'exercer toute autre fonction relative à internet, y'a de sérieuses lacunes à combler.

Un première chôse serait de lancer par la fenêtre tout ce qui touche de près ou de loin à fro.. frontp.. à l'innommable.

(au passage, il faut aussi vérifier la sécurité de l'hébergeur)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 nov. 2007, 21:10

@hakazizi
ils sont tous protegé de differente maniere jecrois que j'ai tellement compliqué la securité de mon site que les hackers laisseron tombé pour sataqué a une proie plus "facile".
La 1ère manière de ne pas sécuriser son site, c'est d'être trop confiant dans ses développements ;)

@Berzemus : Il est possible de faire des sites avec Frontpage, comme avec le mode design de Dreamweaver.
Comme toi, je pense que le résultat n'est pas digne de ce qu'une personne devrait proposer, autant à un client direct (celui qui achète le site) qu'indirect (ceux qui visite le site), mais il peut correspondre à ce que certains recherches.
Je prend un exemple simple : les sites pour les stars de la musique, pour les films, sont 100% flash. Selon moi, c'est une abération, mais les commanditaires comme les clients veulent du joli, design, qui bouge, pas du référencable, du multi-navigateur, du léger.

Il ne faut pas tomber dans du puritanisme exacerbé en réfutant en masse ce qui n'est pas 100% W3C ou dans l'idée ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 558 Messages

11 nov. 2007, 23:08

personne ne va payé pour ce site etant donné que je vait me lancé dans le webcommerce je pense pouvoir commencé a vendre d'ici deux semaine je prend note de toute vos remarques.
j'ai tout fait tous seul design codage je doit bien l'avoué ils n'aurait jamais vue le jours sans votre aide a tous equipe et membres de phpfrance je ne vous remecierait jamais assé.
je voulais aussi un site qui ne soit pas trop lourd a chargé.
pour une "securité optimal" quasiment pas de javascript.
pour que les page se charge rapidement pas d'animation flash
(au passage, il faut aussi vérifier la sécurité de l'hébergeur)
enfin je pense que celeonet propose des hebergement suffisemment protegé.
quand a la balise metat geneator j l'ai piqué :oops: sur un autre site mais je sait plus lequel :wink:

ViPHP
ViPHP | 4039 Messages

12 nov. 2007, 00:27

quand a la balise metat geneator j l'ai piqué :oops: sur un autre site mais je sait plus lequel :wink:


:mrgreen: Pas mal.. (voici toujours un lien qui explicite un peu les metatags, pour mieux savoir ce qu'il faut utiliser et y mettre).

Pour poursuivre ton cheminement, il est toujours bon de s'inspirer de sites existants (en particulier ceux des concurrents :twisted: ) pour savoir ce qui se fait dans le monde, et s'en inspirer.

Pour la sécurité, je pensais à antwerpen.be qui vient de se faire hacker car ils tournaient sur IIS 4.0, c'était juste pour illustrer que la sécurité doit englober bien plus que le site en lui même, mais si c'est une compagnie d'hébergement qui en est chargée, ça doit rouler tranquille.

(Dreamweaver, certes, mais j'attends toujours de voir un site en frontpage qui est joli, design. :roll: )
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 18 Messages

13 nov. 2007, 14:18

(je reviens au post d'origine)

autre solution que le switch(), qui est un peu fastidieux à mettre en place si tu n'as pas de traitement à faire; tu peux déclarer les pages autorisées dans un tableau et faire un in_array()

Code : Tout sélectionner

$page = isset($_GET['page']) ? $_GET['page'] : 'index' ; $array_pages = ('index','article','contact','plan_du_site'); if (!in_array($page, $array_pages)) { die('allez tu sors, ptit con'); } else { include('../pages/'.$page.'.php'); }
on n'oublie pas de fixer le chemin et l'extension dans l'include (on limite les dégâts, on ne sait jamais)

avantage, tu peux, si tu veux, rendre dynamique ton $array_pages (par exemple en le lisant depuis une base de données), et ainsi ajouter des pages "valides" sans toucher ton code.

j'ai oublié quelque chose ? :)

ViPHP
ViPHP | 4039 Messages

13 nov. 2007, 14:34

je dirais qu'insulter l'internaute n'est pas une bonne voie.. si c'est toi qui te goure juste entre la page et le lien, et que c'est lui qui se fait traiter de p'tit con, il va pas toujours aimer... mieux simplement retourner à la page d'acceuil, ou afficher une erreur plus 'politicement correct'.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 18 Messages

13 nov. 2007, 15:30

tu as tout à fait raison ! j'ai raccourci le code, pour l'exemple. en pratique, je redirige plutot vers une page 404...

Mammouth du PHP | 558 Messages

18 nov. 2007, 23:45

tu as tout à fait raison ! j'ai raccourci le code, pour l'exemple. en pratique, je redirige plutot vers une page 404...
ou tout simplement sur la page d'accueil