PHP infos pour les techniciens uniquement

Contribuer au projet de part vos connaissances: PHP, HTML, CSS, SQL, JS ....
Répondre
JPS972
Gsup LEVEL 0
Messages : 8
Enregistré le : jeu. 29 nov. 2012 13:14
Localisation : Martinique

Ci-dessous une proposition pour améliorer la sécurité du php infos en plus de la clé.
Avec le code suivant il est uniquement accessible aux techniciens et admin.

( il faut être connecté pour l'afficher )

Code : Tout sélectionner

<?php 
################################################################################
# @Name : /admin/phpinfos.php
# @Description : PHP Parameters 
# @Call : /admin/system.php
# @Parameters : 
# @Author : Flox, JPS972
# @Create : 17/09/2009
# @Update : 22/02/2018
# @Version : 3.1.28
################################################################################

//cookies initialization
session_name(md5_file('./../connect.php'));
session_start();

//initialize variables
if(!isset($_GET['key'])) $_GET['key'] = '';
if(!isset($_SESSION['user_id'])) $_SESSION['user_id'] = '';
if(!isset($_SESSION['profile_id'])) $_SESSION['profile_id'] = '';
$profile="";

//connexion script with database parameters
require "./../connect.php";

//load parameters table
$query=$db->query("SELECT * FROM tparameters");
$rparameters=$query->fetch();
$query->closeCursor(); 

//if user is connected
if ($_SESSION['user_id'])
{
	//load variables
	$uid=$_SESSION['user_id'];
	
	//load user table
	$quser=$db->query("SELECT * FROM tusers WHERE id=$_SESSION[user_id]");
	$ruser=$quser->fetch();
	$quser->closeCursor(); 
	
	//find profile id of connected user 
	$qprofile=$db->query("SELECT profile FROM tusers WHERE id LIKE $uid");
	$_SESSION['profile_id']=$qprofile->fetch();
	$qprofile->closeCursor(); 
	$_SESSION['profile_id']=$_SESSION['profile_id'][0];
}

if ($rparameters['server_private_key']==$_GET['key'])
{
	
if ($_SESSION['user_id'])
{
			//temporary variables to migrate to trights table
			if ($_SESSION['profile_id']==0)	{$profile="technician";}
			elseif ($_SESSION['profile_id']==1)	{$profile="user";}
			elseif ($_SESSION['profile_id']==4)	{$profile="technician";}
			elseif ($_SESSION['profile_id']==3) {$profile="user";}
			else {$profile="user";}
		
}			
	if ($profile=="technician") phpinfo();
}
?>
GESTSUP 3.1.7

Serveur PROD
Serveur: OS: Windows NT 6.1 build 7600 (W7 BE) i586| Apache 2.4.12 | Mysql 5.6.22-log | PHP 5.6.7

Serveur test ( WAMP)
Serveur: OS: Windows NT 6.1 build 7601 (W7 BE SP1) i586| Apache 2.4.4 | Mysql 5.6.12-log | PHP 5.4.16
Avatar du membre
Flox
Administrateur du site
Messages : 8973
Enregistré le : jeu. 21 juin 2012 19:00

bonjour,

de mon côté le code ne semble pas fonctionner car les variable de session ne sont pas disponible dans cette nouvelle page:
Fichiers joints
2018-02-22 15_33_55-screenshot-zensoft.png
2018-02-22 15_33_55-screenshot-zensoft.png (3.94 Kio) Vu 5043 fois
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.4 | https://doc.gestsup.fr/
Avatar du membre
Flox
Administrateur du site
Messages : 8973
Enregistré le : jeu. 21 juin 2012 19:00

Après il est possible d'ajouter un système de token pr cette page
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.4 | https://doc.gestsup.fr/
Répondre