Gå til innhold

Hva er tillatt å sende i POST?


Anbefalte innlegg

Jeg vurderer å bruke POST til å sende innholdet i en fil fra klient til server, men lurer på om det er noen tegn som blir "oversatt", droppet eller som ødelegger når de er i POST-stringen?

 

Det er en variabel som blir sendt, og det er "input" ($_POST['input']).

 

Er det noe jeg må se opp for som kan gjøre at det som kommer ut av $_POST['input'] er annerledes enn det som kom inn i formen, og kan jeg eventuelt gjøre noe for å fohindre dette?

 

 

Takk,

Degeim

Lenke til kommentar
Videoannonse
Annonse

Hei!

 

Opprinnelig er det ingenting som forandres nei, men hvis du ikke sikrer inputen fra brukeren er det mye som kan gå galt.

 

La oss si at en bruker skriver inn et lite javascript i den formen, det kan være ganske ødeleggende (Bare for å ta et eksempel).

 

Hvis det du tar imot fra brukeren skal inn i MySQL, kan du da bruke

 


mysql_real_escape_string($_POST['input']);

//Output bør også alltid escapes, bruk stripslashes() og htmlspecialchars()

 

Om det ikke skal lagres noen plass, tror jeg - uten å si det så veldig sikkert ettersom jeg ikke er den største eksperten på sikkerhet her - at du kan gjøre slik:

 


stripslashes(htmlspecialchars($_POST['input']));

 

Lykke til!

Endret av -Magne-
Lenke til kommentar

All informasjon som ligger i input-variabelen skal bare lagres direkte til en fil; skal ikke behandles på noen måte.

 

Kan det da gjøre noe skade om brukeren har klart å lure inn javascript/mysql/html eller annet?

Lenke til kommentar

Er det mulig å finne ut hvor stor denne begrensingen er?

 

Jeg skulle gjerne sett på et filopplastingsscript, men jeg har forstått at man kan ikke laste opp filer uten at noen trykker på "Submit" av sikkerhetsårsaker. Er det feil?

 

 

Takk,

Degeim

Lenke til kommentar
Gjest Slettet+142

jepp. Det er jo ikke så alt for mye hvis det er snakk om filer som sanger og videoer da men :p

har satt min til 100MB jeg. Er ikke sikker på hvorfor, men.. :p

Lenke til kommentar
Er det noen anbefalinger for eller imot? Bør jeg bruke POST-funksjonen som mottar data og lagrer det i en fil i stedet for vanlig opplastingsskjema?

 

Noen grunn til at jeg ikke bør gjøre det?

8536980[/snapback]

 

Hva mener du? Vanlig opplastingsskjema sender jo en POST request.

Lenke til kommentar

Ja, det gjør den vel, men jeg vet ikke hvordan den sender filen. Jeg mener å sende innholdet i filen i en POST-variabel, og så skrive det til en fil, i stedet for å bruke opplastingsskjema, siden man da må trykke "Last opp" og "Send" for å få det gjort (jeg må ha det automatisk).

 

Det jeg egentlig lurer på er om det er noen sikkerhetshull eller ting som kan gå galt når jeg sender innholdet i en fil på den måten (innholdet kan jo være så og si hva som helst).

Lenke til kommentar
Gjest Slettet+142

sjekk hvilken type det er, før du buker move_uloaded_file().

 

for å laste opp etter å ha valgt Last Opp tror jeg du må ha Javascript innblandet ;)

Lenke til kommentar
Ja, det gjør den vel, men jeg vet ikke hvordan den sender filen. Jeg mener å sende innholdet i filen i en POST-variabel, og så skrive det til en fil, i stedet for å bruke opplastingsskjema, siden man da må trykke "Last opp" og "Send" for å få det gjort (jeg må ha det automatisk).

 

Det jeg egentlig lurer på er om det er noen sikkerhetshull eller ting som kan gå galt når jeg sender innholdet i en fil på den måten (innholdet kan jo være så og si hva som helst).

8537081[/snapback]

 

Tror jeg kanskje ville ha sett på FTP overføring (om mulig), det skulle vel være enklere og automatisere.

 

http://www.w3schools.com/php/php_ref_ftp.asp

http://no.php.net/manual/en/ref.ftp.php

Lenke til kommentar
Det jeg egentlig lurer på er om det er noen sikkerhetshull eller ting som kan gå galt når jeg sender innholdet i en fil på den måten (innholdet kan jo være så og si hva som helst).

8537081[/snapback]

Du må passe på null-byte-hullet. Dvs at jeg kan laste opp en fil som jeg kaller for minphpfil.php%00.jpg

Det vil bli gjort om til minphpfil.php\0.jpg, og serveren vil prøve å lagre denne. Du tror kanskje at det er et bilde, men den vil bli lagret som en php-fil, og brukeren kan da laste opp php-filer som han vil på din server, og deretter kjøre dem.

Det skjer fordi Apache/webserveren tolker \0 som slutten på en streng. .jpg som ligger bak teller derfor ikke, og den oppretter filen minphpfil.php med innholdet som brukeren selv har lastet opp.

 

Litt knotete forklart ( :roll: ), men det er noe å være obs på...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...