Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361

    SQL Injection - Questo script è protetto?

    Salve, ho letto qualche articolo sull'SQL Injection e ho capito che, senza i dovuti accorgimenti, una query di questo tipo può essere facilmente "attaccata":

    codice:
    $query = "SELECT * FROM users WHERE user='".$_POST['user']."' AND pwd='".$_POST['pwd']."'";
    La mia domanda ora è questa: uno script PHP di questo tipo è inattaccabile?

    codice:
                            $Utente = $_POST['user'];
                            $Password = $_POST['pass'];
    			$query="SELECT Password FROM Giocatori where Nome = '$Utente'";
    			$equ=mysql_query($query);
    			$conta = mysql_num_rows($equ);
    			$risultati = mysql_fetch_row($equ);
    
    			if ($conta == 1) {
    				if ($Password == $risultati[0]) {	
    					... //Login Effettuato
    				} else {
    					... //Login Errato
    Considerando che il login avviene in "due tempi" (prima si estrae la password dal nome utente POI in seguito si confronta con quella inserita nella casella di testo) si può considerare come script sicuro? Oppure c'è il modo di attaccarlo?

    Grazie in anticipo per le risposte

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    certo che sì, è proprio sbagliata in radice l'idea di far eseguire un comando qualsiasi SQL "alla cieca".

  3. #3
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Scusami credo di non aver capito, "certo che si" vuol dire "certo che è attaccabile"? Potresti farmi capire meglio in che modo è attaccabile?

    un'altra cosa: i DB MySQ sono più sicuri perchè non fanno eseguire più di una query sulla stessa chiamata vero? anche in quel caso questo script risulterebbe fallato?

    Grazie

  4. #4
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Vuole dire che non devi solo pensare all'autenticazione in sé...
    se non filtri il campo 'user' è comunque possibile iniettare e modificare il comando SQL.

    Immagina un DB che supporti le stacked query (non MySQL)....

    e immagina di iniettare come user

    '; DROP TABLE utenti;--

    Questo è solo un esempio... drammatico.

    Il fatto che MySQL non supporti le stacked query non è una scusante. I parametri che vanno a comporre la stringa SQL vanno sempre, sempre filtrati.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  5. #5
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    si ho capito.. in effetti il fatto di usare un database mysql non può essere una scusante per non aver adottato sistemi di sicurezza migliori.. grazie della risposta! ora mi è tutto più chiaro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.