Gå til innhold

PHP + MySQL! Sikker innlegging av data.


Anbefalte innlegg

Har tenkt litt på hvordan jeg skal kunne sikre meg at dataen jeg/andre legger inn er riktig og ikke inneholder ondsinnet kode.

 

Jeg har tenkt ut 3 måter man kan ødelegge for oppsettet.

 

1. Hvis man bruker tegnet " vil man kunne få ferdig strengen og skrive kode etter dette. Har ikke fått testet dette selv, men vil tror at noe slikt er mulig.

 

2. Tegnet \ har også forskjellige muligheter og den vil man kanskje kunne bruke som escape ut av en streng.

 

3. Jeg vil få slettet alle <html> -tags som noen kanskje vil prøve å bruke for å ødlegge siden eller bare sette eget personlig preg.

 

 

Tar gjerne mot flere feller man må passe seg for. Hvis noen vet om andre ting man må passe seg for, vil jeg veldig gjerne få høre om dem

 

Venlig hilsen

 

Mobsan ;)

Lenke til kommentar
Videoannonse
Annonse

Du kan bruke:

function filtrer($data){
 $data=mysql_real_escape_string($data);
 $data=htmlspecialchars($data);
 return $data;
}

 

mysql_real_escape_string() gjør om data slik at feks ' blir til \'

htmlspecialchars() gjør om alle spessial tegn om til html koder eks:

<a href='test'>Test</a>

<a href='test'>Test</a&gt

 

En felle som er vanlig å falle i er at man stoler for mye på brukerene. Test altid alle data før de kjøres i databasen ;)

Endret av zokra
Lenke til kommentar

Har hørt at bruken av funksjonen som er skrevet på mysql_real_escape_string skal være mer enn nok:

 

<?php
// Quote variable to make safe
function quote_smart($value)
{
  // Stripslashes
  if (get_magic_quotes_gpc()) {
      $value = stripslashes($value);
  }
  // Quote if not integer
  if (!is_numeric($value)) {
      $value = "'" . mysql_real_escape_string($value) . "'";
  }
  return $value;
}


?>

Lenke til kommentar

Jeg lagde meg 2 funksjoner:

 

 

$data = $_POST['navn'];

$data = filtrer_data_inn($data);
mysql_query(*legge inn med $data*);
mysql_query(*hente ut med $data*);
$data = filtrer_data_out($data);

function filter_data_inn( $data )
{
 $data = strip_tags($data);
 $data = htmlspecialchars($data);
 if (!get_magic_quotes_gpc()) 
 {
   $data = addslashes($data);
 }
 return $data;
}
function filter_data_out( $data )
{
 $data = stripslashes($data);
 return $data;
}

 

Vil disse 2 holde mot at det ikke skal komme ting inn i MySQL databasen min som jeg ikke vil at skal inn der?

 

Tenker da på ting som kan ødelegge siden min og andre som bare er ute etter å lage jævelskap.

 

Vil denne filtreringen av alle data som skal inn i MySQL holde?

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