Gå til innhold

Hva er tillatt å sende i POST?


Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet (endret)

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-
Skrevet

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?

Skrevet

Hvis du ikke skal lese den filen ut på en nettside igjen, tror jeg ikke det er så mye en bruker kan gjøre. Bortsett fra at du får en fil full i koder ;p

Skrevet

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

Gjest Slettet+142
Skrevet

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

Skrevet

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?

Skrevet
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.

Skrevet

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).

Gjest Slettet+142
Skrevet

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 ;)

Skrevet
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

Skrevet
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å...

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å
×
×
  • Opprett ny...