Conseils pour développer des applications sécurisées en PHP

27 janvier 2017

PHP est l'un des langages de programmation les plus populaires pour le Web. Il aide les développeurs à programmer les meilleures applications et à créer de nouvelles références en matière de développement mobile et Web. Cependant, la plus grande préoccupation lors du développement d'une application PHP est celle de la sécurité, ce qui fait du développement d'applications PHP sécurisées un défi majeur, notamment pour les amateurs. Dans cet article, nous vous fournirons 3 conseils majeurs qui vous aideront à éviter certains pièges courants en matière de sécurité et de développement PHP.

Astuce 1 : un rapport d'erreurs approprié est indispensable

Le rapport d’erreurs d’application est très utile pendant le processus de développement. Les rapports d'erreurs ne vous aident pas seulement à trouver les fautes d'orthographe dans les variables, mais également à détecter toute utilisation incorrecte des fonctions.

Cependant, une fois le site Web mis en ligne, les mêmes rapports qui vous ont aidé pendant le développement peuvent se retourner contre la sécurité de votre application en en disant aux utilisateurs bien plus sur votre site Web que vous ne voudriez qu'ils le sachent (par exemple les informations relatives au logiciel). en cours d'exécution et la structure des dossiers, etc.). Avant la mise en ligne du site Web, vous devez vous assurer d’éliminer toutes ces erreurs afin de conserver ces informations sensibles sous couvert. Cela peut être fait en écrivant les lignes suivantes sur nos applications.

rapport d'erreur (0);

Pour toute erreur qui persiste, nous ressentons toujours le besoin de rester informé à ce sujet. Nous devons donc nous assurer que toutes nos erreurs sont enregistrées dans un fichier protégé, ce qui peut être fait à l'aide d'une fonction PHP appelée set_error_handler.

Astuce 2 : Il est conseillé de désactiver les fonctionnalités de PHP qui ne sont plus utilisées

Depuis les débuts de PHP, les concepteurs de PHP ont régulièrement inclus certaines fonctionnalités destinées à faciliter le développement. Ou du moins, ils ont pensé à le faire ainsi ! Certaines de ces fonctionnalités prétendument utiles pourraient tout aussi bien s’avérer avoir des conséquences indésirables. Nous les qualifions de « mauvaises fonctionnalités » car elles permettent la validation des données et créent une voie permettant aux bogues de se frayer un chemin dans les scripts. C'est la raison pour laquelle nous vous suggérons de désactiver certaines de ces fonctionnalités comme l'une des premières choses à faire au moment du début du processus de développement.

Remarque : Ces fonctionnalités peuvent ou non être désactivées pour votre site Web en fonction de votre hébergeur. Si vous développez sur votre propre ordinateur ou dans un autre environnement local similaire, ceux-ci ne seront probablement pas désactivés. Certaines de ces fonctionnalités ont été éliminées dans PHP6, mais sont toujours présentes dans les applications PHP4 et sont finalement obsolètes à partir des applications PHP5.

Enregistrer les Globals (register_globals)

'register_globals' était essentiellement destiné à faciliter le développement rapide d'applications impliquant une chaîne de requête. Le 'register_globals' l'instruction nous permet d'accéder à la valeur avec $var au lieu de $_GET['var'] automatiquement. Cela peut nous sembler utile, mais malheureusement, toutes les variables du code incluent désormais cette propriété, il est donc désormais facile d'accéder à des applications PHP qui ne protègent pas contre de telles conséquences indésirables. L'extrait de code ci-dessous n'est qu'un exemple courant que nous verrons dans les scripts PHP :

if( !empty( $_POST['nom d'utilisateur'] ) && $_POST['nom d'utilisateur'] == 'test' && !empty( $_POST['mot de passe'] ) && $_POST['mot de passe'] == “test123” )
{
$access = vrai ;
}

Si l'application s'exécute avec Register_globals activé, un utilisateur peut simplement placer access=1 dans une chaîne de requête et aura alors accès à tout ce que le script est en cours d'exécution. Bien qu'il ne soit pas possible de désactiver Register_globals du côté du script (en utilisant ini_set, comme dans le cas normal), mais un fichier .htaccess peut être utilisé pour ce faire. En dehors de cela, certains hébergeurs nous permettent également d'avoir un fichier php.ini sur le serveur pour ce faire.

Désactivation avec .htaccess

php_flag registre_globals 0

Désactivation avec php.ini

register_globals = Désactivé

Il convient de noter que si nous prévoyons d'utiliser un fichier php.ini personnalisé qui n'est pas applicable à l'ensemble du serveur, nous devons nous assurer d'inclure ces déclarations dans chaque sous-dossier contenant PHP.

Astuce 3 : Gardez un œil sur les attaques de type Cross Site Scripting (XSS) dans les entrées utilisateur

Une application Web prend généralement les entrées des utilisateurs pour éventuellement les afficher sous une forme ou une autre, qui peut être l'une des plus diverses, y compris des commentaires, des articles de blog ou des fils de discussion qui se présentent tous essentiellement sous la forme de code HTML. Cependant, il convient de noter qu'il peut être risqué pour votre application d'autoriser HTML au moment de l'acceptation des entrées, car cela laisse suffisamment d'espace pour que JavaScript puisse être exécuté de l'une des nombreuses manières inattendues. Et cela permet même aux cookies d'être facilement détournés si même quelque chose de très petit reste sans surveillance. Les pirates de l'air peuvent alors facilement utiliser ces données de cookies pour simuler un compte réel et accéder illégalement aux données de votre site Web. Vous pouvez protéger votre site Web contre de telles attaques en interdisant complètement le HTML, ce qui finit par désactiver également l'exécution de JavaScript. Cependant, cela n'est pas toujours une option réalisable, car cela désactive également complètement le formatage, dont il n'est pas toujours possible de se passer, notamment dans le cas d'un blog ou d'un forum.

Pour résoudre ce problème, vous pouvez désactiver le HTML en grande partie, à l'exception de certains formats simples autorisés. Ceci peut être réalisé en autorisant seulement quelques balises HTML sélectionnées (sans attributs), par exemple la balise « strong » ou la balise « em ». Ou simplement quelques balises populaires comme « BBCode » ou « BB Tags » qui sont couramment écrites sur les forums au format [b]test[/b]. Le BBCode peut également être implémenté à l'aide de packages préexistants tels que HTML_BBCodeParser ou en écrivant notre propre implémentation du BBCode avec des expressions régulières et une série d'instructions « preg_replace ».

Référence: http://www.sks.com.np/basic-security-vulnerabilities-in-php-code/

En tant que leader Société de développement PHP , Carmatec offres de bout en bout Développement PHP des solutions basées sur une technologie de pointe, tant front-end que back-end. En plus du style et du design contemporains, nous travaillons à maintenir des interfaces simples et conviviales. La facilité d'utilisation est notre objectif, même dans les fonctionnalités complexes des sites Web.

fr_FRFrench