Gå til innhold

PHP sikkerhet, noen tips?


Anbefalte innlegg

Videoannonse
Annonse

ja, det jeg tenker på. Kan du forklare denne funksjonen?

 

Kan man da legge til hvilke man vil ha osv?

 

string strip_tags ( string $str [, string $allowable_tags ] )

This function tries to return a string with all NUL bytes, HTML and PHP tags stripped from a given str. It uses the same tag stripping state machine as the fgetss() function.

str: The input string

allowable_tags: You can use the optional second parameter to specify tags which should not be stripped.

Return Values: Returns the stripped string.

 

Hva mer trenger du å ha forklart? o.0

Lenke til kommentar

Bryr du deg om sikkerhet kjøper du boken "Innocent Code - A security wake up call for web programmers".

 

Du må validere input, slik at det ikke er mulighet for å kjøre SQL injections. Google er din venn her.

 

Dessuten må du validere data når du viser det fra databasen. Ellers blir det mulighet for å ta full kontroll over siden din, evt. kjøre XSS.

 

Tenker du på http://php.net/strip_tags eller liknende?

Strip tags er ikke sikkert nok å bare kjøre sånn uten videre. Hva skjer om jeg i gjesteboken legger inn:

 

<scr<script>ipt>

// masse ond kode

</scr</script>ipt>

Kjøres strip_tags på den, fjernes <script> og </script>, men det gjør igjen at nye <script>-tags oppstår. Har sett og utnyttet denne feilen flere ganger. Blant annet brukte jeg den for å ta full kontroll over Nettby en gang i tiden.

Dessuten ville bruk av strip_tags her på forumet faktisk gjort at innlegget mitt ble meningsløst.

Så htmlspecialchars er en bedre løsning.

  • Liker 1
Lenke til kommentar
  • 2 måneder senere...

Kjøres strip_tags på den, fjernes <script> og </script>, men det gjør igjen at nye <script>-tags oppstår. Har sett og utnyttet denne feilen flere ganger. Blant annet brukte jeg den for å ta full kontroll over Nettby en gang i tiden.

Dessuten ville bruk av strip_tags her på forumet faktisk gjort at innlegget mitt ble meningsløst.

Så htmlspecialchars er en bedre løsning.

 

Testa litt nå, og strip_tags() fjerna faktisk <scr<script>ipt> totalt. Kanskje det ikke fungerte på eldre versjoner av php ?

Lenke til kommentar

Jeeez, her var det mye rart som ble sagt. Alt koker simpelthen ned til escaping. I hvert steg, så escaper man tegn som har spesiell mening og kan kludre til noe. Og ikke noe annet. Gjør du mer enn dette, så taper du rett og slett data. La meg komme med noen eksempler.

 

Du kjører strip_tags ved visning av data på ett forum. Vel, hva om jeg faktisk ønsker å vise html-kode? Da er innlegget rendret fullstendig meningsløst. Jeg registrerer meg med brukernavnet <Superman>is-awesome. Du kjører htmlspecialchars ved innsetting av data i databasen. Hver gang forumet skal sende meg en notifikasjon på mail, så vil det stå <Superman>is-awesome. (Text/plain visning.) Ser ikke veldig elegant ut.

 

Det finnes rett og slett et fasitsvar på hva man skal gjøre og det er helt utrolig at folk kommer med andre forslag. Ved innsetting i database, så kjører man data gjennom pg_escape_string, mysql_real_escape_string eller noe ekvivalent for din database. Ved visning av data på en nettside, så kjører man all brukerinput gjennom htmlentities eller htmlspecialchars. Ved utsending av mail, hvor ingen spesielle tegn har noen ekstra mening, så gjør man ingen ting. (Text/plain, igjen)

Endret av Jonas
  • Liker 1
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...