I. Ne plus utiliser de fonction dévaluées :

php est un langage en perpétuelle évolution. Certaines vieilles fonctions sont toujours supportées dans les dernières versions mais sont fortements dévaluées... Pour des raisons de sécurité et de compatibilité dans les futures versions, éviter de telles fonctions se révèle une bonne chose.
Ainsi, par exemple, on préfèrera $_SESSION['TOTO'] à session_register().

II. register_global = Off :

L'un des point de sécurité les plus important celon moi.
Depuis php 4.2, register_global prend la valeur off et php.net préconise de le laisser comme ça. Malheureusement trop de script ne tourne pas en environnement register_global = off, ce qui fait que les serveurs professionnels tourne sous On. Cela n'est pas grave en soit si vous avez développé votre application en Off car elle sera sécurisée.

Imaginez que vous utilisiez une variable $login pour identifier un visiteur de votre site et que vous n'ayez pas travaillé dans un environnement registerglobal = On. Si $login n'est pas présent dans la session, php ira le chercher dans le cookie puis dans les supers variables POST et GET... Comment savoir d'où est affectée cette variable dans ce cas là ?

La réponse est simple, si vous devez chercher cette variable dans la session, faite $_SESSION['login'], dans un cookie : $_COOKIE['login'] et dans $_POST et $_GET pour les autres supers variables. Ainsi, vous saurez exactement d'où provient la valeur prise par une variable et pourrez la contrôler.

III. Typage de variable :

Le point fort de php est d'être facile à apprendre et entreprendre. De ce fait, il n'y a pas de typage des variables à proprement parler...
De cette facilité, née une faille de sécurité dont l'une des principales conséquences sont les injonctions SQL (Objet d'un prochain billet).
Forcer le typage des variables issues notamment de $_GET et surtout celle qui ne sont pas des chaînes de caractère se révèle donc indispensable.
Ainsi si notre variable $login représente un identifiant entier nous la récupèrerons ainsi :

$login_id = intval(@$_GET['login'])

 

La sécurité dans le domaine du web est devenue un point primordial de tout développement. Au risque de me répéter, cette question doit être abordée lors de l'analyse/conception de votre application.
Quel variables dois je récupérer à partir de super variables ? Comment dois je passer certaines informations de page en page ? Cookies ou sessions ? Sont autant de question non négligeable.