# developpement BACK-END avec notions de sécurité / sécurisation

Les résumé des point vue lors des différentes session et un résumé des failles et des solutions pour les sécuriser.

## session 1 : 

### /bak

exemple de code php correspondant à certain pseudo codes

 - variables php
 - tableaux 
 - boucles for
 - ...

### /blog   

Exemple d'un code de blog permettant d'afficher un article après connection à une base de données.

 - code mysqli pour se connecter à une base de données
 - comment se protéger des failles xss (fonction strip tags ou htmlentities)
 - comment valider un champ avec une expression rationnelle

## session 2 : 

### /blog

Exemple d'un code de blog permettant d'afficher un article après connection à une base de données.

 - code mysqli pour inserer des enregistrements
 - comment se protéger des injections SQL (en utilisant des requêtes préparées)
 - en exercice : modifier index.php pour faire pourvoir permettre à un internaute de poster un commentaire.

## pour résumer :

 - XSS ou "Cross Site Scripting" = le fait d'injecter du JS dans des champs de saisie pour exécuter du code sur le navigateur client. On s'en protège en supprimant les tags html, soit tous, soit plus finement en limitant ceux autorisés par exemple). Ceci peut aussi être géré via les CORS dans les entêtes échangés entre le serveur et le navigateur de l'internaute.
 - Injections SQL = le fait d'injecter du code SQL dans les champs de saisie en espérant que ce code soit exécté par le moteur de bases de données. On s'en protège en "escapant" les zones saisies ou en forçant les type. Mais plus cimplement en utilisant des requêtes préparée et en laissant la librairie (mysqli pour php) ou l'ORM ou le framework faire le travail à notre place.
 - Ne pas stocker les mots de passe en base = pour éviter que'un utilisateur malveillant ne puisse trouver les mots de passe ou qu'une personne accédant à la base ne puisse les lire en claire. Utilise un hashage (et éventullement un salt) pour sotcker une chaine unique que l'on sait reconstituer mais dont on ne sait pas inverser le process.

 ## referecnce Hash : 
 Il existe de nombreux types d’algorithme de hachage tels que Message Digest (MD, MD2, MD4, MD5 and MD6), RIPEMD (RIPEND, RIPEMD-128, et RIPEMD-160), Whirlpool (WHIRLPOOL-0, WHIRLPOOL-T, and WHIRLPOOL) ou encore Secure Hash Function (SHA-0, SHA-1, SHA-2, and SHA-3). Dans l’univers des crypto-monnaies, les algorithmes de hachage les plus courant sont SHA-256 et X11.

 https://www.blockchains-expert.com/hachage-cryptographique-le-guide-pour-tout-comprendre/

## exemple de cors très restricitfs : 

```

 34 <Directory "/home/dev.polux.studio/mds/site">
 35     Header set Content-Security-Policy \
 36         " \
 37         script-src 'unsafe-inline' 'self'; \
 38         default-src 'none'; \
 39         connect-src 'self';  \
 40         img-src 'self' 'unsafe-inline'; \
 41         style-src 'self' 'unsafe-inline'; \
 42         base-uri 'self'; \
 43         font-src 'self' data:; \
 44         "
 45 </Directory>

```
