Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10

    evitare vulnerabilità login asp

    Salve , ho crato un sito con login in asp il quale però ho scoperto che ha una vulnerabilità: inserendo nei campi user e password la stringa 'or'=? oppure 'or"=' si puo accedere a nome del primo utente registrato nel database. Come posso risolvere questo bug ? posso fornire tutti i dati in privato. Grazie a chi mi sarà di aiuto

  2. #2
    sql injection... replace(request.form("nickname"), "'","''") al momento di costruire la stringa sql

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    quindi ? che faccio ? dove inserisco quel codice ? grazie x la tua risposta

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    155
    Ciao, ho provato nel mio login a inserire le 2 stringhe che hai segnato ma non mi ha dato problemi di sorta..ovvero, il codice riconosce che il nome inserito è scorretto e quindi non mi fa autenticare..ti posto le 2 pagine necessarie al login..dimmi se t possono essere utili...


    codice:
    <%@LANGUAGE="VBSCRIPT"%>
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="stile.css" rel="stylesheet" type="text/css">
    </head>
    
    <body bgcolor="#FFFFFF" class="testo">
     <form method="post" action="autentica.asp">
     <input type="hidden" name="paginaOriginale" value="<%=request("paginaOriginale")%>">
    <table width="755" align="center" border="0">
      <tr> 
        <td align="center" colspan="2">[img]logo.jpg[/img]</td>
      </tr>
      <tr> 
    	<td height="15" colspan="2" bgcolor="E4E4E4" align="right">
    		<a href="index.htm">
    			<font color="#006633" size="3">
    			.:home:.
    			</font>
    		</a>
    		</td>  
    	</tr>
    					<tr>
    						<td width="120" height="30">Nome Utente:</td>
    						<td><input type="text" name="login"></td>
    					</tr>
    					<tr>
    						<td width="120" height="30">Password</td>
    						<td ><input type="password" name="password"></td>
    					</tr>
    					<tr>
    						<td height="30"><input type="submit" value="Accedi"></td>
    						<td height="30"><input type="reset" value="Cancella"></td>
    					</tr>
    					<tr>
    						<td colspan="2">
    							<font color="#006633" size="+1">
    								<%=request("errore")%>
    							</font>
    						</td>
    					</tr>
    					<tr valign="bottom" align="center"> 
              <td colspan="2"> 
                <hr size="1" noshade width="100%" align="center">
              </td>
            </tr>
            <tr valign="bottom" align="center"> 
              <td colspan="2">
    			<font face="Arial, Helvetica, sans-serif" size="2" color="#003333">
    			indirizzo</font>
    
    
    			
    			<font face="Arial, Helvetica, sans-serif" size="2" color="#003333">
    			per ogni richiesta/informazione: 
    			info@miosito.it</font></td>
            </tr>
            <tr valign="bottom" align="center"> 
              <td colspan="2"> 
                <hr size="1" noshade width="100%" align="center">
              </td>
            </tr>
    				 </table></form>
    			</td>
    		</tr>
    		
     </table>
     
    
     </body>
    </html>
    il form va alla seguente pagina: autentica.asp che verifica la validità della login e a seconda del risultato ti manda alla pagina dell'area riservata oppure ti chiude la porta in faccia:

    codice:
    <%
    'Connessione al database
    'Attenzione: bisogna cambiare posizione al file utenti.mdb nei siti in produzione altrimenti digitando http://mioserver/utenti.mdb
    'si ottiene il database completo con le password in chiaro.
    Set connessione=server.CreateObject("adodb.connection")
    connessione.open "provider=microsoft.jet.oledb.4.0; data source="&server.MapPath("mdb-database/db.mdb")
    
    paginaOriginale=request("paginaOriginale")
    if paginaOriginale="" then paginaOriginale="AreaRiservata.asp"
    
    'Leggiamo i dati raccolti da login.asp
    login=request("login")
    password=request("password")
    
    'Apriamo la connessione al database
    
    'Facciamo la query
    query="SELECT * FROM T_UTENTI WHERE login='"&login&"'"
    Set rs = connessione.execute(query)
    
    if rs.EOF then 'Il resultset è vuoto non esiste nessun utente con il login inserito
    	Session.Abandon
    	paginaDiDestinazione = "login.asp?errore="&Server.URLEncode("Nome utente inesistente")&"&paginaOriginale="&paginaOriginale
    else ' Esiste un utente con il login inserito
    	if rs("password")=password then 'La password inserita è corretta?
    		'Se si autentichiamo l'utente e lo rimandiamo alla pagina originale
    		Session("Autenticato")="OK"
    		Session("livelloUtente")=rs("livelloUtente")
    		Session("nominativo")=rs("nominativo")
    		paginaDiDestinazione = paginaOriginale
    	else
    		'L'utente ha sbagliato password
    		Session.Abandon
    		paginaDiDestinazione = "login.asp?errore="&Server.URLEncode("Password Errata")&"&paginaOriginale="&paginaOriginale
    	end if
    end if
    
    'Facciamo pulizia
    rs.close
    set rs = nothing
    connessione.close
    set connessione = nothing
    
    'Rimandiamo l'utente alla pagina appropriata
    Response.Redirect ("controllo_utente.asp?utente="&login&"&paginaDiDestinazione="&paginaDiDestinazione)
    %>

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    155
    nelle pagine dell'area riservata ho inoltre inserito le seguenti inclusioni:
    codice:
    
    
    in modo che si possa attribuire un livello all'utente e quindi permettegli di visualizzare alcune pagine pittosto che altre...

    ti posto i codici delle pagine qui sotto:

    proteggi.asp -> verifica che la sessione non sia scaduta

    codice:
    <%
    'L'utente è passato per una fase di login?
    if	(Session("Autenticato")<>"OK") then
    	'Se no lo mandiamo ad autenticarsi
    	Response.Redirect "login.asp?errore="&Server.URLEncode("La pagina richiesta appartiene ad una zona del sito riservata, prego autenticarsi")&"&paginaOriginale="&Request.ServerVariables("SCRIPT_NAME")
    else
    	'Se si, ha un livello appropriato?
    	if Session("livelloUtente") < livelloPagina then
    		Session.Abandon
    		Response.Redirect "login.asp?errore="&Server.URLEncode("La pagina richiesta necessita di un livello più alto di sicurezza, prego autenticarsi come altro utente abilitato")&"&paginaOriginale="&Request.ServerVariables("SCRIPT_NAME")
    	end if
    end if
    %>
    livello3.asp per assegnare un livello alla pagina

    codice:
    <%
    'Settiamo il livello di protezione per questa Pagina
    livelloPagina=3
    %>
    così per le altre "pagine livello" livello 1 livello 2 livello3 ecc...

    all'interno del database dove sono registrati i dati di accesso dovrai inserire il campo:
    livelloUtente e assegnare il livello all'utente...NB se setti ad un utente il livello ad esempio 3 sarà in grado di visualizzare anche le pagine di livello 2 e 1...


    spero ti sia utile..ciao!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    10
    grazie x la risposta, adesso contollo il tuo codice, casomai lo adatto al mio

    questo è il file login.asp

    codice:
    <%
    
    dim azione
    
    azione = request.querystring("azione")
    
    
    
    if azione = "logga" then
    
    
    
    dim user, pass, errore, risposta
    
    user = request.form("user")
    
    pass = request.form("pass")
    
    errore = false
    
    
    
    if user = "" or isempty(user) then
    
    errore = true
    
    risposta = "Inserisci un USERNAME corretto!!"
    
    elseif pass = "" or isempty(pass) then
    
    errore = true
    
    risposta = "Inserisci una PASSWORD corretta!!"
    
    end if
    
    
    
    if errore = true then
    
    response.redirect "login.asp"
    
    else
    
    
    
    dim cn
    
    set cn = server.createobject("ADODB.Connection")
    
    cn.open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("mdb-database/registrazione.mdb")
    
    
    
    dim rs
    
    set rs = server.createobject("ADODB.Recordset")
    
    
    
    dim sql
    
    sql = ""
    
    sql = sql & "SELECT * FROM Utenti "
    
    sql = sql & "WHERE Username = '" & user & "'"
    
    sql = sql & " AND Password = '" & pass & "'"
    
    
    
    rs.open sql, cn, 3, 3
    
    
    
    
    
    dim valido
    
    valido = true
    
    
    
    if errore = true or rs.eof then
    
    valido = false
    
    end if
    
    
    
    if valido = true then
    
    dim sessione
    
    sessione = rs("Username")
    
    
    
    dim data
    
    data = date()
    
    
    
    
    
    rs("visita") = data
    
    rs.update
    
    
    
    
    
    session("utente") = sessione
    
    
    
    rs.close
    
    set rs = nothing
    
    
    
    cn.close
    
    set cn = nothing
    
    
    
    response.redirect "login.asp"
    
    end if
    
    end if
    
    end if
    
    %>
    
    
    
    
    
    <script>
    
    function reg(str) {
    
    
    
            searchWin = window.open(str,'articolo','scrollbars=yes,resizable=no,width=600,height=680,status=no,location=no,toolbar=no');
    
    
    
    //        searchWin.refer = self;
    
    
    
    }
    
    </script>
    
    
    
    <%
    
    If isempty(Session("utente")) Then
    
    %><title>People Scooter Club - login</title>
    
    <form action="login.asp?azione=logga" name="login" method="post">
    
    <table width="215" height="122" cellpadding="0" cellspacing="0" bordercolor="#111111" style="border-collapse: collapse">
    
    <tr>
    
    <td width="75" height="21">Login<font face="Verdana" size="2">: </font></td>
    
    <td width="138" height="21"><input type="text" name="user" size="15" style="font-size: 12 pt"> 
    
    </td>
    
    </tr>
    
    <tr>
    
    <td height="21">Password<font face="Verdana" size="2">:</font></td>
    
    <td height="21"><input type="password" name="pass" size="19" style="font-size: 12 pt">
    
    </td>
    
    </tr>
    
    <tr>
    
    <td height="15" style="padding-top: 4" colspan="2">
    
      <p align="center">
    
        <input type="submit" value="LOGIN" size="20" />
    
      </td>
    
    </tr>
    
    <tr>
    
    <td height="29" colspan="2" style="padding-top: 10"><p align="center"></td>
    
    </tr>
    
    </table>
    
    </form>
    
    <%
    
    else
    
    %>
    
    
    
    <font face="Verdana">Benvenuto, <% = Session("utente") %>
    
    
    </font><font size="1">
    </font><font face="Verdana">
    
    <font size="2" color="#FF0000">ACCEDI</font></font><font size="2"><font face="Verdana" color="#000080">
    
    </font>
    
    <font color="#000080">
    
    
    </font></td><%
    
    end if
    
    %></font>
    che rimanda ad areautenti.asp

    codice:
    <%
    
    if isempty(session("utente")) then
    
    response.redirect "login.asp"
    
    end if
    
    %>
    
    <html>
    
    
    
    <head>
    
    
    
    <link rel="stylesheet" href="setting.css" style="text/CSS">
    
    
    
    <title>xxxxxxxxxxxxxxxxxxxxxxx</title></head>
    
    
    
    <body>
    
    
    
    <p align="center">
    
    <font face="Verdana" color="#0000FF">AREA UTENTI</font></p>
    
    
    
    <p align="center">
    
    <font size="2" face="Verdana">Questo è il menù di questa area riservata, <% = session("utente") %></font></p>
    
    
    
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber1">
    
      <tr>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana"><a href="messaggi.asp">MESSAGGI
    PRIVATI</a></font></td>
    
        <td width="20%" align="center" style="padding:0; "></td>
    
        <td width="20%" align="center" style="padding:0; "><font face="Verdana">
    
        <a href="preferiti.asp">UTENTI
    PREFERITI</a></font></td>
    
        <td width="20%" align="center" style="padding:0; "></td>
    
        <td width="20%" align="center" style="padding:0; "><font face="Verdana">
    
        <a href="lista.asp">LISTA
    UTENTI</a></font></td>
    
      </tr>
    
      </table>
    
    
    
    
    
    
    
    
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
    
      <tr>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana"><a href="votidati.asp">VOTI
    DATI</a></font></td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        </td>
    
        <td width="20%" align="center" style="padding:0; "><font face="Verdana">Guide &amp; Manuali</font></td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        </td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana"><a href="votiricevuti.asp">VOTI
    RICEVUTI</a></font></td>
    
      </tr>
    
    </table>
    
    
    
    
    
    
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
    
      <tr>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana" color="#0000FF"><a href="profilo.asp">
    
        PROFILO
    PERSONALE</a></font>
    
    </td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        </td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana"><a href="foto.asp">FOTO
    PERSONALE</a></font></td>
    
        <td width="20%" align="center" style="padding:0; "></td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana"><a href="editprofilo.asp">MODIFICA
    PROFILO</a></font></td>
    
      </tr>
    
    </table>
    
    
    
    
    
    
    
    
    
    
    </p>
    
    
    
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
    
      <tr>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana" size="2">LOG-OUT</font></td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        </td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        </td>
    
        <td width="20%" align="center" style="padding:0; "></td>
    
        <td width="20%" align="center" style="padding:0; ">
    
        <font face="Verdana" size="2">CANCELLAZIONE</font></td>
    
      </tr>
    
    </table>
    
    
    
    <p align="center">
    
    </p>
    
    
    
    <p align="center"></p>
    
    
    
    </body>
    
    
    
    </html>

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.