Avatar billede ea_data Nybegynder
29. februar 2004 - 16:29 Der er 5 kommentarer og
1 løsning

Variabel som filnavn ?

Jeg har en hjemmeside hvor der er mulighed for at bruge cgi scripts. I den forbindelse har jeg et spørgsmål:

Hvordan kan man bruge en variabel som filnavn.
Filnavnet modtages fra en form.
Jeg har prøvet med nedenståend, men det virker ikke.


$kategorifil = $CGI->param('kategorifil');

open (NYT, $kategorifil);
 
    print NYT "------------------------\n";
    print NYT "$overskrift\n";
    print NYT "0\n";
    print NYT "$todays_date\n";
    print NYT "  \n";
   
close (NYT);
Avatar billede erikjacobsen Ekspert
29. februar 2004 - 16:46 #1
open (NYT, ">$kategorifil");
Avatar billede ea_data Nybegynder
29. februar 2004 - 18:02 #2
Hej tak for dit hurtige svar.
Jeg får imidlertid et fejlsvar der ser sådan ud:

./data/forum/test.txtStatus: 302 Found Location: /bin/error?error=Your%20script%20produced%20this%20error%3A%20%3Cbr%3EInsecure%20dependency%20in%20open%20while%20running%20setgid%20at%20ekspert.cgi%20line%2020. URI: /bin/error?error=Your%20script%20produced%20this%20error%3A%20%3Cbr%3EInsecure%20dependency%20in%20open%20while%20running%20setgid%20at%20ekspert.cgi%20line%2020. Content-type: text/html
Avatar billede erikjacobsen Ekspert
29. februar 2004 - 19:19 #3
http://gunther.web66.com/FAQS/taintmode.html



  $kategorifil =~ /^(.*)$/;
  open (NYT, ">$1");

bortset fra den usikkerhed der er i at du vil kunne få overskrevet en vilkårlig
fil i dit filsystem. Men prøv det for at se om det virker.
Avatar billede ea_data Nybegynder
29. februar 2004 - 19:56 #4
Jeg har lige testet dit forslag.
Det virker - tak for det.
Du drømme ikke om hvor lang tid jeg har siddet og rodet med den stump kode
uden at det lykkedes!!
Du skal sende et svar for at få dine points
Avatar billede erikjacobsen Ekspert
29. februar 2004 - 19:58 #5
Jeg ved godt det med svar, men jeg skal ikke have point - jeg samler ikke på dem.
Svar selv, accepter eget svar.

Men skal du bruge scriptet offentligt skal du tage sikkerheden alvorligt.
Hvis du ved at filnavnet fx altid er bogstaver/cifre bør du

$kategorifil =~ /^([a-z0-9]*)$/;

for det vil fjerne muligheder for at bruge "../../hemmeligfil" som filnavn.
Avatar billede ea_data Nybegynder
29. februar 2004 - 21:05 #6
Det vil jeg naturligvis prøve.
Tak endnu engang
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester