Problème grave de sécurité !

Problème grave de sécurité ! - Perl - Programmation

Marsh Posté le 11-06-2004 à 08:23:06    

Bonjour,
 
Mon site est construit autour d'un index.cgi
Si je tape  
monsite/index.cgi?page=|cat%index.cgi|
le mot de passe de ma base de donnée sql s'affiche en clair...
 
Comment faire pour ne plus avoir ce problème et ne plus me faire hacker ?
 
Merci pour votre collaboration et à bientôt
Dex

Reply

Marsh Posté le 11-06-2004 à 08:23:06   

Reply

Marsh Posté le 11-06-2004 à 11:30:06    

de traiter ce parametre dans ton cgi...


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 11-06-2004 à 12:11:03    

Merci Burgergold pour ta réponse.
Mon problème : c'est du Perl et je n'y connais rien :/
Traiter le paramètre dans le cgi, je fais comment ?
A+

Reply

Marsh Posté le 11-06-2004 à 12:14:37    

Code :
  1. use CGI;
  2. my $query = new CGI;
  3. if ($query->param("page" ) =~ /|cat%.+|/) {
  4.   # Tu pourrais t'envoyer un courriel aussi pour être au courant de la tentative
  5.   die;
  6. }


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 11-06-2004 à 13:44:24    

Whahahahah j'imagine la tronche du mec :)))
 
Merci Burgergol Champion !!!

Reply

Marsh Posté le 11-06-2004 à 14:25:26    

Mmmmm Burgergold ça marche pas j'ai une erreur 500...
Je ne sais pas trop où mettre ton code, voici le mien :
=====================================================
#!/usr/bin/perl
 
use CGI;
use DBI;
use LWP::Simple;
use URI::Escape;
unshift(@INC,"/home/machin/truc/cgi" );
require('xxx.pl');
require('yyy.pl');
$mailprog = "/usr/sbin/sendmail";
my $q=new CGI;
@param = $q->all_parameters();
foreach $valeur(@param){
    $in{$valeur} = $q->param("$valeur" );
}
$|=1;
######
$database="bidule";
$hostname="truc";
$port="truc";
$data_source="DBI:mysql:$database:$hostname:$port";
$username="bidule";
$password="machin";
$dbh = DBI->connect($data_source, $username, $password) or print "Connection a la DB bidule impossible\n";
#####
=======================================================
Merci pour ton aide précieuse et bonne fin de journée,
Dex

Reply

Marsh Posté le 12-06-2004 à 21:18:38    

bon t'a deja le use CGI, t'a déjà ton objet de créé, donc apres ton foreach, fait un truc du genre
 
if ($in{"page"} =~ m/|cat%.+|/) {
  die "pouette";
}
 
ya p-e un \ à ajouter avant les | ou le % si ca marche pas


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 12-06-2004 à 22:50:00    

Reply

Marsh Posté le 13-06-2004 à 17:16:30    

Burgergold merci pour ta réponse ma page fonctionne correctement mais ton code ne corrige pas le problème j'ai toujours les infos sensibles qui s'affichent :/
Dex

Reply

Marsh Posté le 18-06-2004 à 13:15:22    

t'arrive a partir de page par un formulaire??
si c'est le cas essaye de mettre method=post et pas GET car GET affiche T infos dans l'url enfin j'suis pas sur entièrement
 
 :sweat:

Reply

Marsh Posté le 18-06-2004 à 13:15:22   

Reply

Marsh Posté le 18-06-2004 à 13:26:28    

en perl les paramètres get et post son récupéré de la même facon, alors ca changera rien

Reply

Sujets relatifs:

Leave a Replay

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