Mon petit bout de code est-il vulnérable aux injections ?

Mon petit bout de code est-il vulnérable aux injections ? - HTML/CSS - Programmation

Marsh Posté le 22-02-2013 à 11:45:09    

Bonjour, j'ai un gros doute sur mon code javascript, est-ce que vous pourriez me dire s'il est vulnérable à des des injections, attaques, etc... ?
 

Code :
  1. // fonction basique ajax
  2. function ouvre(url){
  3.      var xhr = getXhr();
  4.      xhr.open("GET", url, false);
  5.      xhr.send(null);
  6.      if(xhr.readyState == 4) {
  7.  if(xhr.status == 200) {
  8.  return(xhr.responseText);
  9.  }
  10. } else { return(false); }
  11. }
  12. // ma fonction
  13. function ouvrir_onglet(numero_onglet,nom_fichier,couleur){
  14.      var contenu_onglet = document.getElementById("contenu_onglet" );
  15.      if(couleur != ''){ couleur = '?'+couleur; }
  16.      contenu_onglet.innerHTML = ouvre("dossier/"+nom_fichier+".php"+couleur) // risque d'injection ou détournement ???
  17. }


 
L'appel se fait sur ce type :  
 

Code :
  1. <a href="javascript:ouvrir_onglet('1','ma_rubrique','rouge')">onglet 1</a>


 
Merci d'avance !
 
 :bounce:


Message édité par Oyeee le 22-02-2013 à 11:51:09
Reply

Marsh Posté le 22-02-2013 à 11:45:09   

Reply

Marsh Posté le 22-02-2013 à 12:08:43    

Ben potentiellement, n'importe qui peut afficher la console javascript et lancer par exemple :
 

Code :
  1. ouvrir_onglet('1','../mondossier/mapage','rouge&param2=cequejeveux');


 
En gros, on appelle n'importe quelle page avec les paramètres que l'on veut, mais ça on peut déjà le faire en saisissant directement l'adresse dans le navigateur, donc il faut blinder toutes tes pages :p


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-02-2013 à 14:50:42    

Merci mais heu... j'ai pas compris ce que tu me conseilles de faire  :??:  :p

Reply

Marsh Posté le 22-02-2013 à 15:20:21    

Ben en gros ton script permet juste d'afficher le contenu d'une URL dans la page en cours, à priori pas de gros risque.
 
C'est sur les pages appelées qu'il faut faire attention aux risques de sécurité.
 
Notamment ne pas partir du principe que ta page ma_rubrique.php va recevoir le querystring rouge, parce que n'importe qui va pouvoir modifier ça.
 
Mais tout ça n'est pas spécifique à ton script ajax puisqu'on peut avoir le même résultat en tapant directement l'adresse dans le navigateur


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-02-2013 à 15:23:56    

Merci pour la réponse. Donc en gros tout va bien mais c'est au niveau du fichier php qu'il faut que je fasse des vérifications...
 
...genre s'il y a des caractères interdits, etc... ?
 
 :heink:


Message édité par Oyeee le 22-02-2013 à 15:32:37
Reply

Marsh Posté le 22-02-2013 à 15:40:01    

Faudrait plutôt nous monter le code du fichier php appelé :/
 
Le JS, c'est plutôt aux failles XSS que c'est sensible...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-02-2013 à 15:45:07    

Je crois que ça en dit long :
 
http://websec.wordpress.com/2010/0 [...] -overview/
 
NOn ?  :(
 
NB : @rufo -> en fait ça oui mais déjà je voulais savoir si je gardais ce principe dans mon javascript


Message édité par Oyeee le 22-02-2013 à 15:46:31
Reply

Marsh Posté le 22-02-2013 à 15:55:39    

Pour du php astuce de la liste blanche:  
 

Code :
  1. $whitelist = array('home', 'page');
  2.   if (in_array($_GET['page'], $whitelist)) {
  3.         include($_GET['page'].'.php');
  4.   } else {
  5.         include('home.php');
  6.   }


 
Peut-être faire pareil en JS ?

Reply

Marsh Posté le 22-02-2013 à 16:04:00    

Non parce que de toute façon il ne faut pas faire confiance aux données que tu reçois venant du JS.
 
Reprend mon premier exemple, tu ouvres une console javascript et tu appelles la fonction ouvrir_onglet avec les paramètres que tu veux.
 
La vérification doit avoir lieu dans le php, et ton exemple de liste blanche est déjà un bon gardefou : tu sais si le paramètre fait partie d'une liste que tu maîtrises, et s'il ce n'est pas le cas -> dehors.
 
 
Le javascript n'est pas dangereux en soit, du moment que c'est toi qui le défini. Si un utilisateur bidouille ton javascript, ça n'affectera que son poste.
 
Ce qui est dangereux (le fameux xss), c'est si quelqu'un arrive à insérer ce code javascript malveillant sur ton site, et affectera donc tout le monde. Mais pour y arriver, il faut passer par une faille dans le php, pas dans ton bout de code ajax.


Message édité par x1fr le 22-02-2013 à 16:04:53

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 22-02-2013 à 16:06:20    

OK, merci !
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed