Strano errore in inserimento dati nel db

Ciao

Con un semplice form inserisco dati nel db mysql:

....

<TABLE border=0 width=100% cellpadding=3>
<tr>
<td width=100% colspan=2>
<p align=center><b>Inserisci i dati del nuovo utente
<form method=POST action=<? $PATH_INFO ?>>
</b></td>
</tr>
<tr>
<td width=18%><b>Username</b></td>
<td width=82%><input type=text name=username size=20></td>
</tr>
<tr>
<td width=18%><b>Password</b></td>
<td width=82%><input type=text name=password size=20></td>
</tr>
<tr>
<td width=18%><b>Nome azienda</b></td>
<td width=82%><input type=text name=azienda size=20></td>
</tr>
<tr>
<td width=18%><b>Descrizione</b></td>
<td width=82%><textarea name=descrizione rows="5" cols="30"></textarea></td>
</tr>
<tr>
<td width=18%><b>Telefono</b></td>
<td width=82%><input type=text name=telefono size=20></td>
</tr>
<tr>
<td width=18%><b>Fax</b></td>
<td width=82%><input type=text name=fax size=20></td>
</tr>
<tr>
<td width=18%><b>Orari di apertura</b></td>
<td width=82%><textarea name=orari rows="5" cols="30"></textarea></td>
<tr>
....

che vengono uploadati con questo codice:

......
function upload(){
if (isset($_REQUEST['username'])){
$dati=" INSERT INTO utentidb VALUES (NULL,
'".$_REQUEST['username']."',
'".$_REQUEST['password']."',
'".$_REQUEST['azienda']."',
'".$_REQUEST['descrizione']."',
'".$_REQUEST['telefono']."',
'".$_REQUEST['fax']."',
'".$_REQUEST['orari']."',

.....

Ho notato che quando nel campo orari inserisco una cosa del genere:

Feriali: 8:30-13:00 e 17:00 -20:00

Sabato intera giornata

mi ritrovo questi dati caricati nel db anche nel campo descrizione :o :o

cosa che non succede se nel campo orari inserisco solo:

Lunedi - venerdi: 10:00 - 13:00 e 15:00 - 17:50

Perchè questo comportamento strano?

Grazie

inviato 7 anni fa
frankphp
X 0 X

scusate errore banale :-[

c'erano 2 insert uguali nella pagina un po' più sotto.

Grazie

risposto 7 anni fa
frankphp
X 0 X

fossi in te cancellerei il testo di quella query in tempi record...

...oppure talmente è semplice sfruttare la falla di sicurezza, che l'ipotetico hacker nemmeno buca lo script.

sconsiglio inoltre l'uso dell'array $_REQUEST, rende più leggibile il code se usi $_GET, $_POST, $_COOKIE...

...questo a prima occhiata al codice postato...

risposto 7 anni fa
larchitetto
X 0 X

fossi in te cancellerei il testo di quella query in tempi record...

...oppure talmente è semplice sfruttare la falla di sicurezza, che l'ipotetico hacker nemmeno buca lo script.

sconsiglio inoltre l'uso dell'array $_REQUEST, rende più leggibile il code se usi $_GET, $_POST, $_COOKIE...

...questo a prima occhiata al codice postato...

Con quale codice dovrei sostituirla?

Scusami ma non sono esperto di php. Ho giusta un'infarinatura che più passa il tempo e più diventa "diluita" se mi passi il termine, perchè ho pochissimo tempo per approfondire.

Grazie ancora

risposto 7 anni fa
frankphp
X 0 X

beh l'input dell'utente dev'esser sempre filtrato e controllato.

in quel modo ometti questo controllo, e ti fidi dell'utente...

esistono diverse funzioni (o metodi) php che permettono di inserire i caratteri di escape e ad evitare le sql injiection. anzi, se usi mysqli e il binding dei parametri, fa tutto lui (mi pare c'è un articolo su questo sito al riguardo).

risposto 7 anni fa
larchitetto
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda