Gå til innhold

Fjerne HTML fra alle POST-variabler


Anbefalte innlegg

Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd strip_tags($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

 

EDIT: Mente da selvfølgelig strip_tags()...

Endret av simenss
Lenke til kommentar
Videoannonse
Annonse
Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd stripslashes($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

5698497[/snapback]

 

Du kan bruke funksjonen htmlentities , som konverterer html-tagger til tilsvarende tegn (< blir til <). Du kan også bruke addslashes(<variabelen>) . Denne escaper alle ' (enkelt anførselstegn) og " (dobbelt anførselstegn). Dette for å forhindre at en bruker kjører cross-scripting til din (ev) database.

 

tilsist har du funksjonen

strip_tags (<input>, '<tillatte tagger, som <b>, <i>, <u> osv')

, denne fjerner all htmlkode i input, med unntak av de som er listet opp som andre parameter. Dette parameteret er valgfritt. Jeg tror jeg ville brukt en kombinasjon av addslashes og striptags,

dvs

$input = addslashes(trim(strip_tags($_POST['input'])));

Trim() fjerner whitespace på begynnelsen og slutten.

Endret av CruellaDeVille
Lenke til kommentar
Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd stripslashes($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

5698497[/snapback]

 

Så plutselig at du vil automatisere prosessen istedet for å gjøre det på hver enkelt variabel.

 

Det kan gjøres slik:

   
while(list($key, $val) = each($HTTP_POST_VARS)) {
  $val= addslashes(trim(strip_tags($val)));
}

 

Tror at når du da skal hente de ut blir det noe slikt som

$var['variabelnavn']

Lenke til kommentar
Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd stripslashes($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

5698497[/snapback]

 

Så plutselig at du vil automatisere prosessen istedet for å gjøre det på hver enkelt variabel.

 

Det kan gjøres slik:

   
while(list($key, $val) = each($HTTP_POST_VARS)) {
  $val= addslashes(trim(strip_tags($val)));
}

 

Tror at når du da skal hente de ut blir det noe slikt som

$var['variabelnavn']

5699001[/snapback]

Hyyyl! Forsåvidt så spiller det ikke så mye rolle her, men du er klar over at det der er en grusomt tung måte å gjøre det på? Joa, det ser ganske greit ut, men det er i praksis godt over 10 ganger treigere enn den mest optimale løsningen som hvis jeg husker korrekt skal være følgende:

$keys =  array_keys($_POST);
$size = sizeof($keys);
for($i = 0; $i < $size; $i++)
 $_POST[$keys[$i]] = addslashes(trim(strip_tags($_POST[$keys[$i]])));

Endret av Ernie
Lenke til kommentar
Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd stripslashes($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

5698497[/snapback]

 

Så plutselig at du vil automatisere prosessen istedet for å gjøre det på hver enkelt variabel.

 

Det kan gjøres slik:

   
while(list($key, $val) = each($HTTP_POST_VARS)) {
  $val= addslashes(trim(strip_tags($val)));
}

 

Tror at når du da skal hente de ut blir det noe slikt som

$var['variabelnavn']

5699001[/snapback]

Hyyyl! Forsåvidt så spiller det ikke så mye rolle her, men du er klar over at det der er en grusomt tung måte å gjøre det på? Joa, det ser ganske greit ut, men det er i praksis godt over 10 ganger treigere enn den mest optimale løsningen som hvis jeg husker korrekt skal være følgende:

$keys =  array_keys($_POST);
$size = sizeof($keys);
for($i = 0; $i < $size; $i++)
 $_POST[$keys[$i]] = addslashes(trim(strip_tags($_POST[$keys[$i]])));

5699370[/snapback]

 

nå ble jeg litt nysgjerrig. Hvorfor grusomt tungvindt måte å gjøre ting på? Og hvorfor er en forløkke raskere enn en while?

Lenke til kommentar
Jeg ønsker av sikkerhetsmessige årsaker å fjerne all HTML fra alle POST-variabler. Har prøvd stripslashes($_POST) men det virker ikke. Er det mulig å gjøre det i en opperasjon, slik at jeg slipper å bruke stripslashes på hver enkelt POST-variabel?

5698497[/snapback]

 

Så plutselig at du vil automatisere prosessen istedet for å gjøre det på hver enkelt variabel.

 

Det kan gjøres slik:

   
while(list($key, $val) = each($HTTP_POST_VARS)) {
  $val= addslashes(trim(strip_tags($val)));
}

 

Tror at når du da skal hente de ut blir det noe slikt som

$var['variabelnavn']

5699001[/snapback]

Hyyyl! Forsåvidt så spiller det ikke så mye rolle her, men du er klar over at det der er en grusomt tung måte å gjøre det på? Joa, det ser ganske greit ut, men det er i praksis godt over 10 ganger treigere enn den mest optimale løsningen som hvis jeg husker korrekt skal være følgende:

$keys =  array_keys($_POST);
$size = sizeof($keys);
for($i = 0; $i < $size; $i++)
 $_POST[$keys[$i]] = addslashes(trim(strip_tags($_POST[$keys[$i]])));

5699370[/snapback]

 

nå ble jeg litt nysgjerrig. Hvorfor grusomt tungvindt måte å gjøre ting på? Og hvorfor er en forløkke raskere enn en while?

5702835[/snapback]

Faktisk har det noe med hvilke funksjoner du bruker. Normalt er en while-loop raskest (iallfall i PHP5). Derimot er nok array_keys og sizeof betraktelig raskere enn list og each.
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å
×
×
  • Opprett ny...