#14801

Seeing green - The Boston Globe

Là où certains y voient une fête religieuse, perso je vois des gens s’amuser, ensembles, partout.
Les fêtes, les rîtes, peu importe leur origine ou leur signification, sont là pour ça. Unir les gens dans la bonne humeur.

C’est pour ces raisons que je considère certaines traditions et fêtes importantes. Les garder est plus bénéfique à la société que les interdire.
http://www.bostonglobe.com/news/bigpicture/2016/03/17/seeing-green/uVKbupdkWPAqrBzGbavqrM/story.html

#14799

8 Regular Expressions You Should Know - Envato Tuts+ Code Tutorial

Attention : les regex pour les url et les emails de cet article sont TRÈS incomplètes ! Celles-ci sont à ne surtout pas utiliser.

Les emails peuvent contenir des "+=/"* et bien d’autres caractères — y compris des espaces et de multiples « @ » — tout en étant valides !

Pour l’email, la regex qui s’approche le mieux de ce qui serait la vraie regex se trouve ici et elle mesure 6 424 caractères (elle n’est pas 100% complète, cf. les avertissements qui sont énoncés dans la page).

J’ai un outil qui teste le format d’une adresse email, et il se trouve ici.
Voir aussi cet article : http://www.bortzmeyer.org/arreter-d-interdire-des-adresses-legales.html

Des remarques similaires peuvent être faites pour les URL : une URL peut contenir des %, &, des : et d’autres caractères.

Et tout ceci ne tient pas compte des nouvelles adresses en unicode, qui va remettre tout ça en cause

(via)
http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

#14797

Note : astuce sécurité PHP

MÀJ : voir les deux ÉDIT plus bas

Utilisez ça en haut de votre script PHP :

if ($_SERVER['PHP_SELF'] !== $_SERVER['SCRIPT_NAME']) {
	header('Location: '.$_SERVER['SCRIPT_NAME']);
}


Quand je vais sur la page "/index.php" ou sur la page "/" d’un répertoire, le contenu du fichier "index.php" est exécuté en PHP. Ceci est normal.
Par contre, quand je vais sur l’URL "/index.php/" (même chose, mais avec un slash à la fin) ou "/index.php/code_ici", alors Apache considère qu’on va dans un sous-répertoire (à cause du slash). Or, l’ouverture d’un répertoire constitue l’exécution de ce dernier (sous Unix/Linux). Du coup, le contenu de "index.php" est exécuté quand même, alors que pour n’importe quel autre fichier, ça aurait fait une erreur 404.

Le code PHP fonctionnera bien, mais tous les liens relatifs seront cassés, car apache considère qu’on a franchi un nouveau niveau de profondeur dans l’arborescence des fichiers.
Pire, quand on utilise le $_SERVER['PHP_SELF'] , ça contiendra le "/" et tout ce qui suit. Utilise le PHP_SELF est donc compromettant et peut devenir une faille XSS :
/index.php/%22onmouseover=prompt(971741)%3E



Ce que fait mon code : il compare le chemin du fichier actuellement exécuté (index.php) avec le chemin du fichier (index.php/). Si les deux sont différents, il y a un problème, et on renvoie sur (index.php).


ÉDIT :
Je viens de voir que certains serveurs, selon la config, retiraient directement tout ce qui suivait le "index.php". Mon code ci-dessus ne marche donc plus.
Du coup j’ai pondu ceci, qui a l’air de faire son job :

if (basename($_SERVER['SCRIPT_NAME']) === 'index.php' and strpos(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), 'index.php') === FALSE ) {
	$var_request_URI = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH).'index.php';
} else {
	$var_request_URI = $_SERVER['REQUEST_URI'];
}
if (parse_url($var_request_URI, PHP_URL_PATH) !== $_SERVER['SCRIPT_NAME']) {
	header('Location: '.$_SERVER['SCRIPT_NAME']);
}


Vous pouvez essayer sur mon site :
http://lehollandaisvolant.net/
http://lehollandaisvolant.net/index.php
http://lehollandaisvolant.net/index.php?parametre
http://lehollandaisvolant.net/index.php/
http://lehollandaisvolant.net/index.php/?param
http://lehollandaisvolant.net/index.php/codeIci
http://lehollandaisvolant.net/index.php/codeIci/?param

J’ai vu que le problème était présent sur Shaarli aussi : allez sur votre shaarli, allez sur la page "index.php" (qui n’est habituellement pas affichée, mais qui existe quand même) et ajoutez un "/" à la fin de l’URL.

RÉ-ÉDIT : voir là : http://lehollandaisvolant.net/?mode=links&id=20160330174432
http://lehollandaisvolant.net/?mode=links&id=20160319122329