IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Sécuriser le cookie de SESSION d'un Mutualisé OVH


Sujet :

Sécurité

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut Sécuriser le cookie de SESSION d'un Mutualisé OVH
    Bonjour,

    Mozilla Observatory est un outil sympa.

    Quand je le lance pour monsite.com :

    Session cookie set without using the HttpOnly flag

    Le site est sur un Mutualisé OVH, alors j'utilise ini_set avant session_start () :

    ini_set ('session.cookie_httponly', TRUE);

    Je vérifie avec ini_get, 'session.cookie_httponly' retourne TRUE.

    Mais Mozilla Observatory continue à signaler la même erreur : Session cookie set without using the HttpOnly flag

    J'essaye alors avec session_set_cookie_params (array ('secure' => TRUE, 'httponly' => TRUE, 'samesite' => 'Strict')); avant session_start ()

    Mais Mozilla Observatory continue à signaler la même erreur.

    Je ne comprends pas.

    Des changements fait par le htaccess sont bien vus par Mozilla Observatory.

    Mais là je suis obligé de modifier des scripts et cela semble invisible (ou mal fait).

    Des idées ?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Ton site utilise https ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    OUI, https obligatoire via le htaccess.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Connaissez-vous Mozilla Observatory ?

    Un peu bizarre, je veux lui faire tester un cookie, j'envoie ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    session_set_cookie_params (array ('path' => '/', 'secure' => TRUE, 'httponly' => TRUE, 'samesite' => 'Strict'));
     
    session_start();
     
    echo 'lifetime ' . INI_Get('session.cookie_lifetime') . '<br>';
    echo 'path ' . INI_Get('session.cookie_path') . '<br>';
    echo 'domain ' . INI_Get('session.cookie_domain') . '<br>';
    echo 'secure ' . INI_Get('session.cookie_secure') . '<br>';
    echo 'httponly ' . INI_Get('session.cookie_httponly') . '<br>';
    echo 'samesite ' . INI_Get('session.cookie_samesite') . '<br>';
     
    print_r ($_COOKIE);
     
    print '<br>';
     
    print session_name();
     
    print '<br>';
     
    print session_id();

    Et Mozilla Observatory me répond qu'il ne détecte aucun cookie.

    Avez-vous une idée ?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    Fais :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    session_set_cookie_params (array ('path' => '/', 'secure' => false, 'httponly' => TRUE, 'samesite' => 'Strict'));
    Et tu n'auras plus le message dans la console de Firefox qui indique que le cookie sera bientôt rejeté.

    Pourquoi faut-il mettre "secure" à false, je ne peux pas l'affirmer mais il est probable que cela vient du fait que c'est un mutualisé et que les certificats sont également mutualisés. Possible que si tu payes l'option pour avoir un certificat individuel tu puisses mettre l'option "secure" à true.

    Après tu peux aussi mettre une règle de réécriture pour interdire l'accès à ton site via http ce qui fait que dans tous les cas le cookie sera envoyé en https et donc le fait d'avoir configuré "secure" à false n'a pas vraiment d'incidence.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,


    Merci de ta réponse mais mettre Secure à FALSE ne pose-t-il pas un problème de sécurité ?

    L'objectif est de sécuriser la cookie de SESSION qui dans les réglages du Mutu ne l'est pas.

    Je vais essayer ton option ce soir.

    Je te tiens informé.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    J'ai mis Secure à FALSE.

    Mozilla continue à ne pas trouver le cookie.

    Un peu énervant.

    l'URL est du genre :

    monsite.fr/index.php

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Quand je mets le code que tu as donné en exemple, en configurant simplement secure à false (autres valeurs identiques), sur un serveur mutualisé OVH j'ai bien une valeur pour PHPSESSID. Donc peu importe ce que trouve ou ne trouve pas l'outil Mozilla.

    Et concernant la sécurité du cookie de session je t'ai déjà répondu. Si tu obliges (via un .htaccess par exemple) à travailler en https personne ne pourra utiliser ton site en http, donc ton cookie ne sera envoyé que dans une connexion sécurisée avec les données cryptées. Dans quelle mesure ce système est moins sécurisé que d'obliger le cookie à utiliser une connexion sécurisée avec l'option secure = true, je n'en sais rien dans l'absolu (des administrateurs serveur seraient plus aptes à répondre à cette question) mais à priori le résultat est le même puisque de toute façon ton cookie sera envoyé dans une connexion https. Et tu peux facilement obliger à utiliser https dans un fichier .htaccess.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci de ta réponse.

    https est forcé par htaccess.

    Je n'ai pas de doute sur la sécurité du cookie.

    Mais pourquoi Moeilla Observatory ne détecte pas le cookie ?

    As-tu une idée sur ce sujet ?

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par boteha Voir le message
    Mais pourquoi Mozilla Observatory ne détecte pas le cookie ?

    As-tu une idée sur ce sujet ?
    Non aucune. Après les outils programmés ou robots font ce qu'ils peuvent dans la mesure de leurs moyens et il y a des situations qui leur échappent dans certains contextes...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci de ton suivi.

    Je m'attendais quand même à mieux de Mozilla Observatory.


    Autrement il y a de nombreuses façon de sécuriser la cookie de SESSION pourri envoyé par OVH.

    Par le htaccess :
    Header set Set-Cookie HttpOnly;Secure;SameSite=strict
    (et variante pour version 4.2 d'Appache)

    Par une suite de INI_Set

    Par session_set_cookie_params

    Ou même par setcookie en récupérant le nom et la valeur du cookie généré par session_start ().

    Une méthode te paraît-elle meilleure ?

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par boteha Voir le message
    Autrement il y a de nombreuses façon de sécuriser la cookie de SESSION pourri envoyé par OVH.
    ...
    Une méthode te paraît-elle meilleure ?
    Non c'est pas OVH, ce sont les réglages par défaut de Php, c'est pareil si tu utilises un serveur local wampserver, easyphp etc.. A chacun ensuite de choisir les options qu'il veut. Par défaut c'est régler pour offrir un maximum de possibilités, libre à toi de les restreindre ensuite.

    Ensuite il y a de nombreuses méthodes toujours dans le but de répondre à un maximum de cas de figure car certains serveurs (ou plutôt les administrateurs serveur) peuvent restreindre les fonctionnalités et ne pas interpréter certaines commandes, et de plus certaines méthodes peuvent être utilisées dans un certain contexte mais pas dans d'autres. Utilises la méthode qui te convient le mieux en fonction de tes besoins et de ton serveur.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci de suivi.

    Ok, j'ai compris que ce sont les réglages par défaut de PHP et qu'OVH ne veut pas y toucher.

    Quelle méthode choisir ?
    Celle par htaccess est la plus facile à mettre en œuvre.
    Mais j'aimerais en trouver une qui soit reconnue par les utilitaires de test, dont Mozilla Observatory.

    Je te tiens informé.

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par boteha Voir le message
    Quelle méthode choisir ?
    Celle par htaccess est la plus facile à mettre en œuvre.
    Mais j'aimerais en trouver une qui soit reconnue par les utilitaires de test, dont Mozilla Observatory.
    Si elle fonctionne, la méthode par le .htaccess est effectivement plus pratique, sinon avec la fonction session_set_cookie_params il faudrait configurer les options dans toutes les pages avant de déclarer session_start().

    A propos de Mozilla Observatory, utilises-le pour autre chose que de regarder le cookie de session car apparemment il ne sait pas retourner les bonnes valeurs. Si avec un contrôle session_get_cookie_params tu trouves les bonnes valeurs, c'est bon puisque tu interroges le serveur Php.

    D'ailleurs ton questionnement m'a induit en erreur au début quand je te disais qu'il fallait mettre secure=false sur les mutualisés d'OVH, j'ai du confondre avec un autre sujet. Je viens de faire le test avec session_set_cookie_params et secure=true et tout fonctionne correctement. J'ai essayé différentes combinaisons en regardant le résultat dans la console de Firefox:

    secure=false et samesite=None => message de la console : le cookie de session sera bientôt rejeté car "secure" = false et "samesite" n'a pas la bonne valeur.

    secure=true et samesite=None => Aucun message (ok)

    secure=false et samesite=Strict=> Aucun message (ok)

    secure=true et samesite=Strict=> Aucun message (ok)

    C'est donc conforme à la documentation MDN et montre que le changement de configuration via php est bien pris en compte, d'une part par session_get_cookie_params de php et également observé par la console de Firefox.

    Bah donc en fait y'a aucun soucis! C'est Mozilla Observatory ou l'utilisation que tu en fait qui pose problème, mais ni OVH, ni PHP dont les réglages par défaut sont encore pour l'instant "strict=false" et "samesite=none", c'est à dire comme depuis toujours. Mais il n'y a aucune difficulté à configurer ces paramètres autrement même sur un mutualisé (la seule condition pour sercure=true étant bien entendu d'avoir https).

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci de ton suivi.

    Je pense utiliser session_set_cookie_params ().

    Sur mon site de test cela fonctionne bien avec la console Firefox, je n'ai pas essayé avec Mozilla Observatory.

    session_set_cookie_params () est donc à placer avant session_start () dans tous les scripts primaires.

    Je vais faire un include d'un petit script avec plusieurs modifications des paramètres PHP ou Appache, du genre :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    ini_set ('session.use_strict_mode', TRUE);
    ini_set ('expose_php', FALSE);
    session_set_cookie_params (array ('secure' => TRUE, 'httponly' => TRUE, 'samesite' => 'Strict'));
    etc...
    ?>

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    Salut,

    Il ne sert à rien le ini_set ('expose_php', FALSE);. D'après la doc php c'est uniquement modifiable dans le fichier "php.ini" donc inaccessible depuis php.

    De mon coté, plutôt que de faire un include, et étant donné que j'ai un autoload pour charger mes classes, je me suis créé une petite classe pour générer les sessions et les cookies.

    Le but est de définir pour l'initialisation de la session et l'envoie des cookies, une configuration par défaut différente des valeurs par défaut définies par php. Cela m'évite d'avoir à renseigner ces options pour chaque utilisation de session_start() ou de setcookie(). En même temps, cela permet aussi d'utiliser toujours la même syntaxe pour définir des options quelque soit la version de Php, tout en renseignant l'option "samesite" pour les "anciennes" version de Php < 7.3.

    Contrairement aux valeurs par défaut de Php qui sont configurées avec un minimum de sécurité (sans doute pour assurer une compatibilité avec les versions antérieures qui par défaut offrent un maximum de possibilités), je préfère avoir des valeurs par défaut avec un maximum de sécurité, et préciser les options qui diminuent intrinsèquement la sécurité, explicitement et au cas par cas.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    abstract class SetCookie 
    {
    	public static function cookie ($name, $value, $options = [])
    	{		
    		$defaut = ['expires' => 0, 'path' => '/', 'domain' => null, 'secure' => true, 'httponly' => true, 'samesite' => 'Strict'];
     
    		$options = array_merge($defaut, $options);
     
    		if (PHP_VERSION_ID < 70300) {
    			// Utilise le bug des versions < 7.3 qui n'échappe pas le ";" pour passer l'option samesite dans l'option domaine
    			setcookie($name, $value, $options['expires'], $options['path'], $options['domain'].'; samesite='.$options['samesite'].'', $options['secure'], $options['httponly']);	
    		}
    		else {
    			setcookie($name, $value, [
    				'expires' => $options['expires']
    				,'path' => $options['path']
    				,'domain' => $options['domain']
    				,'secure' => $options['secure']
    				,'httponly' => $options['httponly']
    				,'samesite' => $options['samesite']
    				]
    			);
    		}
    	}
     
    	public static function sesStart ($secure = null, $samesite = null) 
    	{		
    		ini_set('session.use_strict_mode',true);
     
    		if (!session_id()) 
    		{
    			$secure = $secure !== null ? $secure : true;
    			$samesite = $samesite !== null ? $samesite : 'Strict';
     
    			if(PHP_VERSION_ID < 70300) {
     
    				session_set_cookie_params(null, '/', null.'; samesite='.$samesite.'', false, true);
    			} 
    			else {  
    				session_set_cookie_params([
    					'path' => '/'
    					,'domain' => null
    					,'secure' => $secure
    					,'httponly' => true
    					,'samesite' => $samesite
    				]);
    			}
     
    			session_start();
    		}	
    	}
    }
    ?>
    Et donc pour l'utilisation:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Initialisation d'une session sécurisée
    SetCookie::sesStart();
     
     
    // Envoi d'un cookie sécurisé 
    SetCookie::cookie ('pseudo', 'toto');
     
    // Envoi d'un cookie avec la définition des options "expires" et "httponly" à false pour pouvoir être récupéré en javascript 
    SetCookie::cookie ('designcolor', 'black', ['expires' => time() + 3600*24*60, 'httponly' => false]);


    Après pour que cela soit compatible également avec un serveur localhost sur pc, j'ai ajouté un test qui permet de commuter automatiquement "secure=false" si je suis sur mon serveur d'évaluation qui ne supporte pas https:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php
    abstract class SetCookie 
    {
    	/* Configurer "$dossier_eval" avec le nom du dossier du serveur d'évaluation retourné par var_dump(__FILE__) sans indiquer les trois première lettres caractérisant le lecteur.
    	 Ex : si var_dump(__FILE__) = G:\wamp64\www\Site\Classes\SetCookie.php, configurer $dossier_eval = wamp64, ou encore $dossier_eval = wamp64\www
    		
    	Suppose que le serveur distant est https. Si le serveur distant n'est pas https, il suffit de définir "private static $server_secure = false;" sans rien changer d'autre.
    	*/
    	private static $dossier_eval = 'wamp64\www';
     
    	private static $server_secure = null;
     
    	private static function init (){
     
    		if ( self::$server_secure === null ) self::$server_secure = (strpos(__FILE__,self::$dossier_eval) === 3) == false;
    	}
     
     
    	public static function cookie ($name, $value, $options = [])
    	{
    		self::init();
     
    		$defaut = ['expires' => 0, 'path' => '/', 'domain' => null, 'secure' => self::$server_secure, 'httponly' => true, 'samesite' => 'Strict'];
     
    		$options = array_merge($defaut, $options);
     
    		if (PHP_VERSION_ID < 70300) {
    			// Utilise le bug des versions < 7.3 qui n'échappe pas le ";" pour passer l'option samesite dans l'option domaine
    			setcookie($name, $value, $options['expires'], $options['path'], $options['domain'].'; samesite='.$options['samesite'].'', $options['secure'], $options['httponly']);	
    		}
    		else {
    			setcookie($name, $value, [
    				'expires' => $options['expires']
    				,'path' => $options['path']
    				,'domain' => $options['domain']
    				,'secure' => $options['secure']
    				,'httponly' => $options['httponly']
    				,'samesite' => $options['samesite']
    				]
    			);
    		}
    	}
     
     
    	public static function sesStart ($secure = null, $samesite = null) 
    	{		
    		ini_set('session.use_strict_mode',true);
     
    		if (!session_id()) 
    		{
    			self::init();
     
    			$secure = $secure !== null ? $secure : self::$server_secure;
    			$samesite = $samesite !== null ? $samesite : 'Strict';
     
    			if(PHP_VERSION_ID < 70300) {
    				session_set_cookie_params(null, '/', null.'; samesite='.$samesite.'', $secure, true);
    			} 
    			else {  
    				session_set_cookie_params([
    					'path' => '/'
    					,'domain' => null
    					,'secure' => $secure
    					,'httponly' => true
    					,'samesite' => $samesite
    				]);
    			}
     
    			session_start();
    		}
    	}
    }
    ?>
    Et l'utilisation est identique.

    A noter que pour configurer "secure" je fais un test sur __FILE__ plutôt que d'utiliser $_SERVER['HTTPS'] qui parfois ne retourne pas la bonne valeur, notamment avec les serveurs load balancing.

    L'inconvénient de ma méthode est que je dois configurer la propriété "$dossier_eval" de la classe en indiquant le dossier de mon serveur d'évaluation, mais c'est fait une fois pour toute étant donné que je le nomme toujours de la même manière, et au pire cela me renverrait une erreur franche facilement identifiable (genre "vous ne pouvez pas utiliser secure sans un serveur https") uniquement sur mon serveur d'évaluation et sans affecter les valeurs définies sur le serveur distant.

    Donc plutôt que de tergiverser avec $_SERVER['HTTPS'], je préfère cette méthode plus simple et plus robuste, car même s'il faut configurer une propriété pour le localhost, l'inconvénient est marginal et sans risque pour le code distant. Par ailleurs, pour peu que l'on inclue systématiquement un fichier de constantes avant l'autoload des classes, la propriété "$dossier_eval" pourrait être définie par une constante.

    Enfin pour être complet, quand je te parlais dans un précédent message de forcer le https, concrètement chez moi cela donne:
    Code htaccess : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{DOCUMENT_ROOT} !^G:/wamp64/www/
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    Le premier "RewriteCond" sert dans le même but que précédemment, pour être compatible avec mon serveur d'évaluation.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci, c'est très intéressant.

    je relis tout à tête reposée ce soir ou demain au plus tard.

    Je reviens vers toi.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour ABCIWEB,

    Merci pour tes explications détaillées, c'est très intéressant.

    Je pense que je vais me contenter de mon petit include moins technique mais facile à mettre en place et facile à faire évoluer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    
    ini_set ('session.use_strict_mode', TRUE);
    
    ini_set ('session.use_trans_sid', FALSE);
    
    session_set_cookie_params (array ('secure' => TRUE, 'httponly' => TRUE, 'samesite' => 'Strict'));
    
    ?>
    J'ai viré expose_php non gérable par ce moyen.
    J'ai demandé à OVH si expose_php est modifiable par leur petit fichier ovh.config, leur réponse comme d'habitude n'est pas claire mais je crois bien que non.

    Je vais faire des tests pendant le week-end, je te tiens informé.

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,
    session.use_trans_sid c'est pour si tu passais ton identifiant de session dans l'URL, mais depuis PHP 5.3 la configuration session.use_only_cookies vaut TRUE par défaut donc à mon avis cela ne sert à rien, d'autant plus que session.use_trans_sid a toujours été désactivée par défaut.

    Citation Envoyé par boteha Voir le message
    Je pense que je vais me contenter de mon petit include moins technique mais facile à mettre en place et facile à faire évoluer.
    Oui cela fera l'équivalent, cela dit j'ai fait cette classe surtout pour la gestion des cookies autres que les cookie de session, sinon effectivement pour la session on a souvent toujours les mêmes réglages. D'ailleurs j'ai mis uniquement deux options pour gérer le cookie de session mais c'est plus pour le principe qu'autre chose car j'utilise toujours SetCookie::sesStart(); sans arguments.

    Donc l'intérêt de cette classe est surtout pour gérer les cookies "standard". J'ai mis httponly=true par défaut pour un maximum de sécurité, mais j'ai parfois besoin de pouvoir configurer cette option à false, par exemple pour ce mode d'emploi dont on peut choisir la couleur d'affichage et la disposition du menu qui sont enregistrés dans un cookie envoyé par javascript pour préserver l'affichage lors des rafraichissements de la page, et de même pour le module d'upload Ajax (correspondant au mode d'emploi) qui enregistre l'avancement du téléchargement du fichier dans un cookie envoyé en php et récupéré par javascript. Pour dire que contrairement au cookie de session, il n'est pas possible d'avoir toujours les mêmes paramètres pour les autres cookies si l'on choisi d'avoir un maximum de sécurité par défaut.

    Enfin je ne pense pas que tu gagnes quelque chose de significatif en modifiant "expose_php", cela m'étonnerais que les pirates y soient sensibles pour choisir les cibles de leurs attaques. Quand bien même ils connaitraient la version de Php, les pirates exploitent surtout les failles des scripts conçus par les développeurs, et évidemment les scripts open source sont les premiers visés. Les failles Php sont mineures et très difficilement exploitables, dans des conditions très particulières difficilement reproductibles. Bref, supprimer "expose_php" n'est pas la priorité sur un serveur Php, mais si tu y tiens tu peux peut-être essayer dans ton code: header_remove('x-powered-by'); (personnellement j'ai pas testé).

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Encore merci de ton suivi.

    J'enlève session.use_trans_sid de mon include.

    Par ailleurs j'utilise très peu de cookies et ceux-ci sont proprement générés par SetCookie avec les paramètres sécurisés, seul le cookie de SESSION a besoin d'être sécurisé par mon include.

    Pour la version de PHP je te suis, c'était quand même une recommandation type Warning de Dareboost.

    Mes javascripts sont très légers et ne font pas appels à des cookies.

    Je vais y travailler ce week-end.

    Je te tiens informé.

Discussions similaires

  1. Durée d'une session sur serveur mutualisé OVH pro
    Par cholopat dans le forum Langage
    Réponses: 3
    Dernier message: 29/09/2011, 10h47
  2. [Cookies] Cookies et sessions
    Par TNorth dans le forum Langage
    Réponses: 6
    Dernier message: 19/05/2006, 00h22
  3. Réponses: 3
    Dernier message: 01/05/2006, 14h09
  4. [Cookies] PB sessions php et navigation sous imode
    Par hardkmel dans le forum Langage
    Réponses: 8
    Dernier message: 23/12/2005, 12h22
  5. [Cookies] Récupération de cookie de session...
    Par Tizard dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2005, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo