This is a machine translation. The original page (in English) is available here.
Windows
Mac OS
Mobile

Dernières nouvelles: 19 septembre 2016 - Nous avons ajouté de nouvelles catégories pour le suivi des tests de produits: Microphone et la Webcam Enregistrement, etc... Flux RSS

Accueil>news du Monde>Déclarer la Guerre à des Attaques par Injection SQL

AnyKeylogger pour Mac

Déclarer la Guerre à des Attaques par Injection SQL

Nous devrions avoir éradiqué les attaques par injection SQL . SQL injection doit être de la génération Internet de la variole ou de la polio -- partis pour de bon. Les contre-mesures sont facilement disponibles et compris. Ils sont faciles à mettre en œuvre. Et pourtant, je continue à voir des titres comme "Huge Web hack attack infecte 500 000 pages."

Les attaques par injection SQL continuer à être parmi les plus fructueuses à l'encontre de sites et applications Web. Et pourquoi pas? À partir d'un attaquant de point de vue, la base de données derrière de nombreuses applications Web est l'endroit où le très juteux des cibles vivantes. C'est là que vous trouverez les enregistrements de client, numéro de carte de crédit et autres bonnes choses.

Et maintenant les attaquants ont commencé à l'aide de l'injection SQL à l'usine de logiciels malveillants sur les sites Web, afin que les visiteurs de ces sites obtiennent leur ordinateurs infectés par le malware. Les bases de données ne sont pas seulement où la juteuse objectifs sont; ils sont mûrs pour la plantation de données malveillantes qui infecte les ordinateurs des autres personnes.

Cela soulève les enjeux et les rend encore plus irrésistible argument en faveur de l'éradication de chaque injection SQL par défaut dans l'existence. Nous devons nous assurer que les applications SQL injection de défauts. Prenons regarder de plus près pour voir ce qui est en cause.

SQL, ou Structured Query Language, est une interprétation d'une base de données de la langue qui est couramment utilisé par les serveurs d'application en parlant à des serveurs de base de données. Les bases de données sont où, comme je l'ai dit, nous stockons des choses comme les dossiers des clients. Un enregistrement peut être constituée d'un nom de client, adresse, adresse e-mail, numéro de téléphone, de carte de crédit et informations de paiement.

Comment ça marche

À la vue d'un client dans une base de données, une requête SQL est construit dans le serveur d'application et envoyé à la base de données, qui doit retourner au client de l'information et rien de plus. La requête pourrait ressembler à quelque chose comme:

select * from clients où nom='Dupont'
Alors, quel est le big deal? Ainsi, dans les serveurs d'application, le nom du client est généralement représentée comme une variable avec une valeur entre l'application via un formulaire Web -- avec des données provenant de l'utilisateur de l'application. Donc, en Java, la requête peut être construit de la manière suivante:

String query = "Select * from clients où nom='" + req.getParameter("nom") + "'";
Voir le problème encore? Eh bien, dans le normal fonctionnelle cas, un utilisateur saisit un nom de famille comme "Smith" dans ce domaine, mais un attaquant pourrait tout aussi facilement entrer une valeur de "" ou '1'='1'-". Qui seraient le résultat d'une requête semblable à la suivante envoyée au serveur:

select * from clients où nom=" ou '1'='1'
Que l'expression Booléenne (nom=" ou '1'='1') est toujours vrai, ce qui entraînera la base de données du serveur de répondre à la totalité du contenu de la clientèle tableau de données. Qui est, notre attaquant a tout juste réussi à extraire les données des clients de chacun de nos clients. Pas bonne.

Mais je n'ai dis que le problème est facile à résoudre. Vous voyez, la question sous-jacente dans le scénario ci-dessus est que l'intention de la logique SQL peut être malicieusement modifiés par formé les données de l'utilisateur. Mais Java et la plupart des Web-langues apparentées nous fournir une solution simple appelé les requêtes paramétrées.

Dans une requête paramétrée, les données sont transmises à la requête SQL que les données réelles, et ne faisant pas partie de la syntaxe SQL lui-même. Il prend seulement un peu plus d'effort pour mettre en place la requête, mais alors c'est fait, et toutes les données fournies par un attaquant fera rien à l'intention de notre requête.

Comment Résoudre le problème

Voici ce que notre requête ci-dessus pourrait ressembler si nous avons utilisé de Java requête paramétrée mécanisme, appelé déclarations préparées à l'avance:

String lastName = req.getParameter("nom"); String query = "Select * from clients où nom = ?" PreparedStatement pstmt = connexion.prepareStatement( query ); pstmt.setString(1, nom ); try { ResultSet résultats = pstmt.execute( ); }
OK, donc c'est un couple de plus de lignes de code, mais c'est un modèle simple à suivre. Et les résultats sont fonctionnellement identiques pour les vulnérables forme, mais sans la vulnérabilité.

Si nous nous contentons de passer par le biais de nos applications Web et de modifier l'ensemble de nos requêtes SQL dans la forme d'une déclaration préparée à l'avance, on peut complètement effacer tous les SQL injection de faiblesse dans le monde. Sérieusement.

Nous aurons encore beaucoup d'autres questions à traiter, de type cross-site scripting (aussi connu comme "XSS"), mais nous avons éliminé ce un problème d'injection SQL entièrement.

Je sais ce que vous devez penser: Il ne peut pas être aussi simple que cela, sinon on aurait pu le faire avec l'injection SQL ans. Ce serait seulement partiellement vrai. Au niveau technique, c'est ce simple. Mais au niveau humain, pas tellement.

Pour résoudre le problème de l'injection SQL, plusieurs conditions préalables doivent exister. L'un, nous avons besoin d'avoir accès au code source de l'application elle-même. Si notre application a été sous-traitée, ou si nous sommes en s'appuyant sur le code tiers, c'est peut-être pas une chose simple.

Et c'est la seule de l'homme des obstacles que je ai entendu que des excuses pour ne pas la fixation d'un défaut de sécurité. Il y a beaucoup d'autres.

Mais, les gens, nous méritons mieux que le statu quo. Nos entreprises méritent mieux; nos utilisateurs méritent mieux; en effet, nos clients méritent mieux. Arrêtons de faire des excuses et commencer à gagner de raisons. En faire un objectif pour parcourir vos applications Web maintenant et éradiquer toute seule injection SQL faiblesse. Et pendant que vous y êtes, assurez-vous d'enseigner à chacun et à chacune de vos développeurs de logiciels comment faire fort d'appels SQL.

Pas plus d'injection SQL. Plus d'excuses.
Accueil>news du Monde>Déclarer la Guerre à des Attaques par Injection SQL
IMPORTANT! L'installation de l'ordinateur à des outils de surveillance sur les ordinateurs que vous ne possédez pas ou n'avez pas la permission de suivre peuvent violer locales, de l'état ou la loi fédérale.
Suggest translation