[php] problème conceptuel

Résolu/Fermé
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 2 juin 2007 à 02:10
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 3 juin 2007 à 22:05
Bonsoir ici,

Bon un 'ti soucis. --edit-- gros soucis en fait quand je vois le paquet de lecture que ca fait ! lol --/edit--

Donc voilà, j'ai fait en premier lieu le design du site (xhtml/css) visible ici http://marmottemanu.free.fr/share/ccm/ms.org/ (je sais pas si c'etait la bonne option de commencer par ça ou s'il valait mieux coder avant). Et là, je m'attaque au codage php/sql. J'ai un gros soucis conceptuel :

1- soit j'appelle tout le contenu des pages depuis un fichier index et je fait de l'url rewritting derriere pour faire qqch de propre

2- soit au contraire, j'ai des pages de contenu qui appellent tout ce qui se trouve autour

dans les deux cas, je crois que j'ai un soucis...

1- j'ai lu pour cette option qu'il pouvait y avoir un gros probleme de sécurité, car en appellant les pages depuis l'index, si l'on ne spécifie pas les pages autorisées à etre appelées, alors n'importe qui peut inclure son propre code php dans la variable appelante et faire des bétises sur le site... la solution est donc de tester si la page est autorisée, mais le problème, c'est que cela signifie que toutes les pages crées doivent être inscrites dans le fichier de test (donc a chaque nouvelle page créée, il faut rajouter son autorisation... bof bof comme solution je trouve)

2- là y'a un problème : il me semble qu'en faisant ainsi, je ne serais plus en mesure de créer "in line" le contenu des pages web (j'ai une bdd derrière sur laquelle je compte pour gérer les publications) ce qui serait un réel avantage... car il faudrait dans tous les cas créer le fichier php correspondant à la page web en question, et donc faire un transfert ftp pour chaque page, ne serait ce que le contenu de ce fichier php soit du style "include header / recup du contenu dans la bdd / include footer" (pour simplifier)

Y'a t il une solution pour "solutionner" ce problème ? Je souhaiterais vraiment mettre en place un système d'administration (du contenu) tout en ligne (je m'embarque peut être dans qqch de fou pour un jeune autodidacte quasi débutant), ou dès lors que j'ai uploadé mes fichiers essentiels à la gestion de l'ensemble du site, je n'aie plus à revenir sur le ftp pour ajouter du contenu...et tant qu'à faire, j'aimerais éviter la solution d'utilisation d'un cms déjà écrit...je ne suis pour l'instant pas satisfait par tous les cms que j'ai pu tester, d'ou ce choix. mais il faudra peut etre que je revoies mes ambitions à la baisse (?).

Si quelqu'un avait quelques pistes à me donner, ce serait génial ! ca me permettrait de me lancer dans l'intégration des premiers scripts que j'ai créé (la zone membre pour commencer), car si je commence dans l'une des deux directions et que je flanche, ca voudrait dire recommencer...

Toutes idées bienvenues ! Merci d'avance
A voir également:

5 réponses

ACNet Messages postés 64 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 24 novembre 2007 14
2 juin 2007 à 11:20
Bonjour,

C'est faux, rien ne t'oblige à spécifier chaque page autorisée :

En fait, il y a quelques temps, les concepteurs de sites peu soucieux de la sécurité utilisaient une technique qui avait l'avantage d'être hyper simple :

ils passaient en paramètre d'url : ?page=nomdepage.php

Ensuite, ils n'avaient plus qu'à faire un include($_GET["page"]); et le tour était joué.

En effet, c'était une énorme faille puisque n'importe qui pouvait alors ouvrir n'importe quel fichier. Et pour peu que l'admin se soit amusé à autoriser tous les fichiers du serveur en lecture, ca devenait vraiment catastrophique ;)


En fait, la solution la plus sûre est effectivement de n'autoriser que certains fichiers à l'aide d'un switch par exemple.

switch($_GET['page']){

case 'accueil':
include('accueil.php');
break;
case 'contact':
include('contact.php');
break;
default:
include('accueil.php');
break
}

C'est sûr, c'est suffisamment restrictif.


Tu peux cependant choisir 2 autres méthodes :
faire une requête SQL pour voir si le nom est autorisé, ainsi que la page à include. Ca a le mérite d'être tout aussi restrictif, et editable en ligne, mais assez lourd niveau charge bd ...


N'autoriser que certains fichiers :

Tu peux très bien n'autoriser que certains types de fichiers, par exemple ceux qui sont situés dans un dossier en forcant le chemin d'accès, et en supprimant tous les "." et "/" passés dans l'url , ou alors, par exemple, ajouter préfixes/suffixes à tous les fichiers pouvant être ouverts :

include('page-'.$page.'.public.php');

Ainsi, les fichiers ne correspondant pas à la structure
page-nomdepage.public.php ne pourront pas être ouverts.



En esperant avoir répondu à ta question.

Stephane
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
2 juin 2007 à 12:04
salut,

me suis posé et me pose encore la même question que Gryzzly.
j'ai opté pour une page index qui inclut des contenus différents selon chaque page.

en gros ma page index ressemble à :

<?php
switch (sur le $_GET)
--> $selected_page = int ;
if (utilisateur identifié)
--> confirmation ou infirmation du choix
?>
<html>
<head></head>
<body>
<div>page header</div>
<?php
include ('pages/page_selectionnee.html');
?>
<div>page footer</div>
</body>
</html>

je ne sais pas si cela est très sécurisé… mais comme toi je pensais faire de la ré-écriture d'URL pour le référencement et la "propreté".
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
2 juin 2007 à 13:07
C'est faux, rien ne t'oblige à spécifier chaque page autorisée :
En fait, la solution la plus sûre est effectivement de n'autoriser que certains fichiers à l'aide d'un switch par exemple.

au final, c'est bien ce que je disais, on est obligé de vérifier l'autorisation, donc créer l'autorisation, donc mettre a jour le fichier correspondant et donc passer par le ftp... (ma solution 1)

Tu peux cependant choisir 2 autres méthodes :
faire une requête SQL pour voir si le nom est autorisé, ainsi que la page à include. Ca a le mérite d'être tout aussi restrictif, et editable en ligne, mais assez lourd niveau charge bd ...

lourd par ce que ? en raison de la requete supplémentaire de vérification ? d'autre part, je ne vois pas encore trop comment on met en place cela... cela revient à faire un "moteur de recherche" qui n'affiche certes pas de résultats, mais dont on traite le résulatt pour le comparer à la variable appelée, et je ne suis pas encore assez au point.

N'autoriser que certains fichiers :
Tu peux très bien n'autoriser que certains types de fichiers, par exemple ceux qui sont situés dans un dossier en forcant le chemin d'accès, et en supprimant tous les "." et "/" passés dans l'url , ou alors, par exemple, ajouter préfixes/suffixes à tous les fichiers pouvant être ouverts :
include('page-'.$page.'.public.php');

c'est lourd comme méthode, noms de fichiers à extension, et passage par le ftp pour upload des pages...

je reste coi :'( ca ne m'a pas trop aidé, mais merci pour les infos qui donnent quelques pistes !
0
ACNet Messages postés 64 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 24 novembre 2007 14
3 juin 2007 à 21:14
Bonjour,

Selon l'architecture du site, tu n'as pas à passer par ftp pour uploader les pages. Par exemple pour un site basique proposant une dizaine d'articles , et une page de contact, tu devras uploader la page de contact, et la page de gabarit des articles. Tu mettras le contenu des articles en base de données.

Quelque soit l'article à lire, tu charges la meme page qui lis l'article depuis la base de données. Pour créer un article il te suffit de créer un nouvel enregistrement dans ta base de donnée.

Biensûr rien ne t'oblige à faire comme ca, mais c'est la méthode la plus couramment employée. Tu n'as besoin de faire des uploads que dans le cadre de modifications structurelles majeures.

Stephane.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
3 juin 2007 à 22:05
je crois avoir saisi le principe... en revanche, je sens que je vais galérer sur la mise en place :ooo
0