IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

injection sql et cross site scripting: côté client ou serveur


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut injection sql et cross site scripting: côté client ou serveur
    Bonjour,
    SI apache (donc j'utilise php) est mon serveur web,
    serait ce préférable de gérer les injections sql et le cross site scripting: du côté client ou du côté serveur.
    Où a t-on plus de sécurité?
    SI c'est du côté client, qu'elle procédure adopter pour les injections sql et le cross site scripting?
    Si c'est du coté serveur, quelle procédure suivre pour les injections sql et le cross site scripting?
    Merci.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Bonjour

    Question sécurité, ne te repose jamais sur le client, tout ce qui se passe de ce côté est falsifiable, simulable, etc (à peu de choses près).

    Sur les questions de sécurité en PHP, tout ou presque est une question de bonnes pratiques. De saines lectures : http://php.developpez.com/cours/#securite

    Pour te prémunir des injections SQL, l'utilisation de mysql_real_escape_string (si tu utilises mysql) telle que recommandée par la doc fait déjà des merveilles. Il y a beaucoup d'informations intéressantes dans les commentaires de la page de doc.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    en réalité ma requete de mise à jour est dans un fichier .vbs.
    la base est sql server.
    est ce que je peux toujours utiliser mysql_real_escape_string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	NewMDP = ServerTRN.Encode(NewMDP)
     
    	SQLQueryDecis = "update IUT set ID_UTIL = '" & NewID & "' , MDP_UTIL = '" & NewMDP & "' where VUNAME = '" & Vuname & "'"
    	ConnectionFi.Execute SQLQueryDecis,NbRecordAffected,&H80

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Non tu ne peux pas, les fonctions mysql_xxx sont des fonctions de l'extension mysql de PHP, réservées à MySQL.

    Je croyais que tu travaillais en PHP, c'est peu probable qu'ici tu trouve des réponses pour des questions en VB. Mais il y a d'autres sections sur le site.

    Si tu utilises PHP, il y a une extension SQL Server, mais personnellement je ne la connais pas : http://fr.php.net/manual/fr/ref.mssql.php

    Dans tous les cas tu trouveras sans doute réponse à tes questions d'injection SQL dans le cas de SQL server dans la FAQ SQL Server, les cours et tutoriels, ou à défaut le forum SQL Server.

  5. #5
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Pour un bon site sur la sécurité avec SQL Server : http://www.sqlsecurity.com/

    Des conseils de M$ : http://msdn2.microsoft.com/fr-fr/library/ms161953.aspx
    Un document sur le sujet : http://www.ngssoftware.com/papers/ad..._injection.pdf
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Je confirme, la sécurité se pose côté serveur et non client. L'injection de SQL est facilement contournable avec une bonne gestion des privilèges SQL.

    Le mieux étant évidemment d'utiliser essentiellement des procédures stockées ET REIN d'AUTRE !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    Pouvez vous me donner un coup de pousse concernant cette procédure pour empécher les injections sql?
    merci.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Déportez toutes vos requêtes dans des proc stock...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    Bonjour, voici un exemple de procédure stockée.
    Comment puis je faire pôur contrôler les injection SQL dans ma procédure?
    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    CREATE Procedure AjoutAuteur
    @CodeAut int, 
    @NomAut varchar(30),
    @PrenomAut varchar(30),
    @Message  varchar(50) output --contient le vide si tout s'est bien passé et une chaîne sinon
     
    As
    begin
    set @Message = '' --on suppose que tout s'est bien déroulé
    set @CodeAut=(select Max (CodeAut) from Auteur)
     
    if @CodeAut is null   --@@ROWCOUNT = 0 --on suppose que il n'ya pas d'enregistrement   
          begin
          set @CodeAut=1
          Insert Into Auteur(CodeAut, NomAut,PrenomAut)
          Values(@CodeAut, @NomAut,@PrenomAut)
          set @Message = 'Ajout effectué.'--on suppose que tout s'est bien deroule
          end
       else  -- aucun enregistrement
       begin
       If (Exists (select *  From Auteur Where (NomAut =@NomAut and PrenomAut=@PrenomAut)))
          set @Message = 'Auteur déjà exitant.'
          else
          begin
          set @CodeAut=(select (Max (CodeAut) + '1' ) from Auteur)
          Insert Into Auteur(CodeAut, NomAut,PrenomAut)
          Values(@CodeAut, @NomAut, @PrenomAut)
          set @Message = 'Ajout effectué.'--on suppose que tout s'est bien deroule
          end
       end
    end
    GO

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Il n'y a pas d'injection de SQL possible dans cette procédure car vous n'utilisez ni EXEC (@...) ni sp_executeSQL.

    Si vous voulez renforcer la sécurité des tables en jeu dans ce cas, interdisez le privilège INSERT sur la table Auteur.
    Remarquez aussi que ce qui différe dans l'appel d'une procédure d'insertion et d'ajout c'est la connaissance de la clef. Vous pouvez donc écrire une seule proc stock commune à l'INSERT ou l'UPDATE...

    Attention à votre méthode d'autoincrémentation des clefs. Elle est par essence extémement dangereuse à double titre.
    1) rien n'empêchera l'apparition de doublons. Un utilisateur peut en effet effectuer la même opération en léger décalage et se retrouver avec la même valeur extraite par SELECT
    2) au fur et à mesure de la montée en charge le SELECT MAX prendre de plus en plus de temps car il lui faut verouiller TOUTE la table
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/clefs/
    Utilisez de préférence les auto incrément normalisés tels que IDENTITY.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    j'ai un petit souci. Mon problème c'est que l'application n'utilise pas des procédures stockées, les utiliser revient à revoir l'application d'une manière fondamentale. Est ce que je ne pourrai pas utiliser des expressions régulières, du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim reg As Regex = New
    Regex("^[A-zA-Z0-9_]{10}$")
    reg.IsMatch(TextBox1.Text)

Discussions similaires

  1. Cross-site scripting
    Par onlytoine dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/05/2013, 18h55
  2. script c# client ou serveur?
    Par Arkk19 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/03/2013, 09h08
  3. [WB10] Cross site scripting
    Par Zoons dans le forum WebDev
    Réponses: 5
    Dernier message: 21/01/2008, 17h59
  4. [Sécurité] Securité cross site scripting
    Par doudou439 dans le forum Langage
    Réponses: 3
    Dernier message: 20/01/2007, 13h59
  5. Réponses: 2
    Dernier message: 04/10/2006, 08h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo