wiki/TipsDevWeb.md

96 lines
3.2 KiB
Markdown
Raw Normal View History

2017-04-18 10:00:47 +02:00
---
title: Bonnes pratiques du développement web
---
2016-12-29 11:25:39 +01:00
2017-04-18 10:00:47 +02:00
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
2016-12-29 11:25:39 +01:00
Voici quelques conseils que nous recommandons fortement aux développeurs web.
## Scripts en crontab
* Un script en crontab devrait renvoyer ses erreurs sur _stderr_
* Un script en crontab ne doit renvoyer sur _stderr_ qu'en cas d'erreur
* Un script en crontab ne doit pas rediriger _stderr_ dans un fichier (exemples à ne pas reproduire: `2> cron_err.log` ou `> cron_err.log 2>&1`)
* Un script en crontab ne doit rien renvoyer sur _stdout_
2017-04-18 10:00:47 +02:00
* Un script en crontab devrait être lancé avec une option `-quiet` ou `-cron`, permettant de
2016-12-29 11:25:39 +01:00
le lancer en mode interactif sans cette option et d'obtenir des informations (sur _stdout_)
2017-04-18 10:00:47 +02:00
* Un script en crontab ne devrait pas faire de requête en curl/wget sur _localhost_ ... surtout si
2016-12-29 11:25:39 +01:00
le script demande beaucoup de ressources ! [[BR]] L'utilisation d'un langage CLI est conseillé. [[BR]]
*[PHP]* Dans le cas de PHP, il faut par exemple utiliser PHP CLI (qui a souvent des limitations moins restrictives qu'en mode web)
* Un script doit être lancé dans lancé dans la crontab de l'utilisateur, JAMAIS EN ROOT
* Si un script est lancé dans la crontab de root (pour une mauvaise raison donc), il ne doit être accessible que par root (en écriture ET lecture)
* Si un script lancé dans la crontab de root a des droits Unix 777, merci de vous pendre.
* Un script en crontab ne devrait pas être lancé à la minute 0, et surtout pas à 00h00. Ces heures sont maudites par tout sysadmin.
## Gestion des droits
* masque # 027 en mode FTP/SFTP VS masque 077 en mode web
* Si besoin des droits d'écriture pour le web :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ chmod g+w
2016-12-29 11:25:39 +01:00
~~~
* Un fichier avec les droits 777 (ou 666) provoque la fonte de la banquise, dégage du CO2 et tue des bébés chats.
(même le site Internet du diable lui-même n'a pas de fichier en 666.)
### Détection des droits incorrects
* Détecter les fichiers non lisibles par Apache (lecture sur le groupe) :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ find ./ -type f ! -perm /g=r -exec ls -l {} \;
2016-12-29 11:25:39 +01:00
~~~
* Détecter les répertoires non lisibles par Apache (lecture/exécution sur le groupe) :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ find ./ -type d \( ! -perm /g=r -o ! -perm /g=x \) -exec ls -ld {} \;
2016-12-29 11:25:39 +01:00
~~~
* Détecter les fichiers/répertoires accessibles en écriture par Apache (écriture sur le groupe) :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ find ./ -perm /g=w
2016-12-29 11:25:39 +01:00
~~~
* Détecter les fichiers/répertoires accessibles en écriture par tous :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ find ./ -perm -007 -o -type f -perm -006
2016-12-29 11:25:39 +01:00
~~~
### Wordpress
<http://codex.wordpress.org/Changing_File_Permissions#Permission_Scheme_for_WordPress>
Les droits d'écriture ne sont requis dans un cas général, mais voici les changements de droits souvent requis :
* Autoriser les uploads :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ chmod -R g+w wp-content/uploads/
2016-12-29 11:25:39 +01:00
~~~
* Gérer des règles d'écritures via Wordpress :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ chmod 660 .htaccess
2016-12-29 11:25:39 +01:00
~~~
* Pour éditer des thèmes via l'éditeur en ligne de Wordpress :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ chmod -R g+w sur les thèmes que l'on veut éditer
2016-12-29 11:25:39 +01:00
~~~
* Si répertoire de cache :
2017-04-18 10:00:47 +02:00
2016-12-29 11:25:39 +01:00
~~~
2017-04-18 10:00:47 +02:00
$ chmod -R g+w cache/
2016-12-29 11:25:39 +01:00
~~~
* À voir selon les plugins installés (qui doivent documenter les changements de droits nécessaires)
## Déploiement