|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
Bonjour,
Si en PHP j'arrive à sécuriser mes requetes SQL contre le SQL injection, en ASP 3 pouvez-vous me donner le moyen le plus efficace pour en faire de même ? ça passe peut être par une fonction de nettoyage des variables dans ce cas avez-vous un regex à me conseiller ? Merci à vous tous. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
Salut,Oui, tout à fait.
La plupart des attaques consistent à remplacer une variable passée en paramètre par une chaine sql. Je ne crois pas qu'on puisse utiliser une expression regulière. A+ |
|
00
|
|
|
#3 |
![]() ![]() |
Salut,
Le seul moyen d'y remédier est de simplement créer une fonction qui remplace tout les mots ou expressions à remplacer comme tu l'avais suggérer. Attention, je ne sais pas si tu sais mais il faut aussi faire attention aux urls susceptible de pouvoir contenir de l'sql injection
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours FAQ ASP |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 7 ![]() |
Oui j'étais donc sur la bonne voie, j'ai crée un regex qui devrait résoudre ce problème :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 6 ![]() |
Salut,
En plus de ce qui a été déjà dit, tu peux essayer d'interdire les caractére : <, >, =, ; puis AND, OR Je pense que tu peux utiliser les expression régulière, voir tutorial suivant. http://jacques-guizol.developpez.com...Exp/RegExp.php http://prevot.developpez.com/outils/regex/ Je pense qu'il doit avoir unr fonction asp ou vbscript pour tester les expression regulieres. A+ |
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() |
Bonjour ,
Et je rajouterais en priorité dans mes filtres CAST puis DECLARE. CAST te permet de passé des donné en hexa alors attention. Je rajouterais aussi sp_exec Voili voilou |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
J'oubliais aussi,
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() |
Salut,
Sauf que des injections peuvent être codées en hexa ce qui démonte toute ta mécanique de détection. Suis les conseils d'immobilis le sage |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
Ouh là faut faire attention tout de même.
Oui Peut-être pas car pour avoir vu les effets de nihaorr1 , il faut tout de même faire un CAST de la chaine haxedecimale. Donc il reste du code malveillant sous forme literale (cf image jointe).C'est le genre de truc qui marche quand on ne verifie pas bien les données qui rentre. On constate que l'instruction ne marcherai pas dans les champs texte dont la taille est correctement dimenssionnée. Je crois tout de même que le premier truc à faire est d'utiliser un identifiant de connection à la base avec un minimum de privilèges (SELECT, UPDATE/INSERT sur certaines tables et pas DELETE, ...). Citation:
A+ |
|
|
00
|
|
|
#10 | ||
|
Membre actif
![]() Inscription : mai 2005 Messages : 205 ![]() |
Salut salut,
Citation:
Citation:
A plouch
__________________
2.21 GigoWatts!!!!!!A fait une montée de version de l'OS marié 1.0 vers papa 1.0.
|
||
|
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
Citation:
A lire: http://fr.wikipedia.org/wiki/Injection_SQL A+ |
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() |
Salut,
J'ai aussi été attaqué, on m'a injecté plein de lien vers un script alacon qui doit sans doute installer une sorte de virus ou au moins un malware. Parade (Je ne vois pas quoi faire d'autre en attendant que ma version ASP.net 3.5 soit prête)
Après, lorsqu'on travaille sur un CMS avec un répertoire d'Upload SURTOUT ne pas oublier de retirer les droits d'exécution du répertoire d'upload. Bon, ben bon Week end, si j'arrive a finir tout ça en 2 jours je me raze la tête... ++ Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
A+ |
|
00
|
|
|
#14 |
|
Membre chevronné
![]() |
Salut,
Un schéma est un groupe d'objets. Ça permet, très simplement de regrouper toutes les procédures stockées pour que seul un rôle puisse les exécuter. L'intérêt du schéma combiné au rôles est d'éviter justement que l'utilisateur site puisse avoir accès à la liste des tables ou plus. Donc le rôle permet de regrouper des utilisateurs et de leur affecter des droits sur les schémas qui regroupent des objets. Si tu ne donnes que les droits d'exécution uniquement sur tes procédures de ton schéma (et donc pas dbo qui donne accès à certaines proc système), normalement tu es protégé. Concernant le l'utilisateur séparé du compte du site, selon moi c'est une erreur car ça oblige (EN ASP 3) a stocker quelque part le mot de passe et c'est dangereux. Il vaut mieux utiliser la sécurité de sql serveur combinée à celle de Windows. J'ajoute que si j'en juge les endroits ou on m'a injecté des cochonneries, je crois que c'est la partie ASP.net 1.1 qui a été violée et non la partie ASP 3.0 toutefois je peux me tromper et il est possible que les deux soient en cause. @+ Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
Citation:
Pour ce qui est de la sécurité du mot de passe. Bah, le code vbscript serveur n'est pas visible et les fichiers ne sont pas téléchargeables. Alors... Ta base de données et ton site ne sont pas sur le même serveur j'imagine. Peux-tu expliquer comment tu gères les identifiants sur les deux domaines constitués par les deux machines? A+ |
|
|
00
|
|
|
#16 |
|
Membre chevronné
![]() |
Re
Je suis un tout petit éditeur indépendant... Je n'ai pas 36 machine mais une seule... C'est même pas une bête c'est juste un P4 à 2Ghtz avec 1Go de ram. Pour répondre à ta question, le mieux est d'utiliser un Web Service WS* Deuxième option c'est de faire une relation d'approbation de domaines. Dans mon cas, mon serveur de prod est une machine stand alone bien protégée par un Firewall. En 5 ans, je n'ai eu qu'une seule attaque réussie. D'après ce que j'ai lu, c'est presque un bug laissé intentionnellement par MS. Sans doute pour pousser les gens à renouveler leur parc. La future version de mon application sera quasi inviolable. Elle est en préprod pour le moment. Elle pourra fonctionner sur une machine, deux ou sur un réseau plus complexe doté d'une batterie de serveurs frontaux stateless. L'un des mécanismes de protection sera un interpréteur de contenu fonctionnant en temps réel à la sauvegarde et à la restitution de chaque contenu. J'ai aussi imaginé une solution pour garantir une parfaite sécurité pour les upload. Etant tout seul je suis obligé de conserver ma solution actuelle en prod pour les quelques clients de test que j'ai. C'est lorsqu'on est confronté à ces problèmes que l'on constate que créer et faire évoluer un CMS c'est pas juste mettre en oeuvre un éditeur WYSIWYG open source pour sauvegarder deux pages web... ++ Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
|
|
#17 |
|
Membre chevronné
![]() |
Salut,
Je sais qu'il y a au moins 10 bonnes raison de ne pas poster ça ici mais c'est dans le prolongement de ce qui précède. Je m'apperçois que j'ai bien IUSR... qui utilise ma base de données pour les pages ASP 3 par contre pour les pages asp.net 1.1 issues de la même racine web, j'ai l'impression qu'ASPNET a les droits dbo (ce qui m'ennuie). C'est bien ASPNET qui nollicite la base de données lorsque les pages ASP.net s'exécutent ? D'avance merci pour votre aide car la j'ai un gros doute... ++ Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
|
|
#18 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : mars 2004 Messages : 5 859 ![]() |
Citation:
A+ |
|
|
00
|
|
|
#19 |
|
Membre chevronné
![]() |
Re,
Merci. C'est bien ce qui me semblait. Ce qui m'étonne c'est que des scripts SQL écrits en chaines de caractères à partir d'asp.net passent alors qu'ASPNET n'a pas les droits en SELECT UPDATE ET DELETE. Il doit y avoir des droits par défauts... C'est assez gênant dans mon cas.. Je verrais ça demain matin, là j'overdose un peu ++ Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
|
|
#20 |
|
Membre chevronné
![]() |
Salut,
Je viens de relire le thread qui m'a fait un peu peur au niveau de la chaine codée en hexa. Je pense être concerné puisque je manipule mainenant des variables nvarchar(max). Si le site n'a plus que des procédures stockées, vous pensez qu'il est encore vulnérable au SQL Injection ? D'avance merci, Laurent
__________________
Je dirige actuellement une équipe qui travaille sur la refonte d'un système d'information d'une compagnie d'assurance. Application à base de technologie Microsoft conçue en architecture de service (SOA avec du BPM, BRM, MDM) avec les derniers outils clients léger ASP.net MVC (3.x+)... Je recrute des nouveaux collaborateurs (un à deux ans d'expérience) pour intégrer ce projet qui constituera une très bonne expérience (Projet d'une durée minimale de 2 ans à Levallois Perret). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com