Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Bug area riservata

  1. #1

    Bug area riservata

    Salve a tutti
    un cliente mi ha fatto notare che inserendo questa sequenza
    'or''='
    come password di un area riservata si riesce ad accedere nonostante non ci sia nessun utente con questa passw.

    Si logga e recupera i dati del primo id_utente nel db.

    Se si inseriscono dati non corretti il controllo funziona perfettamente, solo con questa sequenza ho questo bug.

    di seguito il codice della pagina in questione:

    Codice PHP:
    'se Action ha come valore "enter"...

    elseif Action = "enter" then
    '
    creo la variabile User e passw con il valore del campo u del form

    Dim User
    pass
    User 
    request.form("NAME")
    Pass request.form("PASSWORD")

    'Dim Pass
    '
    Se User e/o Pass è vuota stampo un errore
    'if (User = "" or Pass = "") then
    '
    response.write "Form incompleto!"
    'response.end
    '
    in caso contrario procedo alla verifica
    'else


    '
    Apro la connessione al DB

    'imposto il redirect fallito
    LoginFailed="default.asp?reason=Accesso%20negato&login_tipe=1"

    Dim Conn

    Set Conn = Server.CreateObject("ADODB.Connection")

    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&_

    Server.MapPath("/mdb-database/database10.mdb")


    '
    Imposto la query ed apro il recordset

    Dim Query
    Rs

    Query 
    "select * from USERSRICARICHE where USE_NAME = '" User "' and USE_PASSWORD = '" Pass "' and USE_ACTIVE = 1"
    Set Rs Server.CreateObject("ADODB.Recordset")

    Rs.Open QueryConn33

    'se nessun utente corrisponde stampo un errore

    if Rs.EOF then

    response.redirect LoginFailed
    '
    response.write "Spiacente! Login non corretto"
    'response.end


    '
    in caso contrario imposto la mia session ed effettuo il redirect sulla prima pagina

    else

    Session("User") = User
    Session
    ("Pass") = Pass
    session
    ("USE_ID") = rs("USE_ID")

    set cmdHits Server.CreateObject("ADODB.Command")
    cmdHits.ActiveConnection MM_connIWGallery_STRING
    cmdHits
    .CommandText "UPDATE USERSRICARICHE SET USE_HITS = USE_HITS + 1 WHERE USE_ID = " rs("USE_ID") & " "
    cmdHits.CommandType 1
    cmdHits
    .CommandTimeout 0
    cmdHits
    .Prepared true
    cmdHits
    .Execute()

        
    ' username and password match - this is a valid user

    '    
    Response.Cookies("IWGalleryUserName") = MM_valUsername
        Response
    .Cookies("USE_ID") = rs("USE_ID")
        
    response.write (Request.Cookies("USE_ID"))
    '    response.end

    Response.Redirect PrimaPagina

    end if


    '
    chiudo Rcordset e connessione

    Rs
    .Close
    set Rs 
    Nothing
    Conn
    .Close
    Set Conn
    Nothing

    end 
    if 
    Qualche consiglio?
    Grazie a tutti
    Scusate sto imparando!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    E' colpa della

    "select * from USERSRICARICHE where USE_NAME = '" & User & "' and USE_PASSWORD = '" & Pass & "' and USE_ACTIVE = 1"

    classica vulnerabilità di tanti siti.

    Usa i Parametri per la query e non la concatenazione dei dati in una stringa

    Consulta google ... ad esempio

    http://community.visual-basic.it/luc.../29/17427.aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    [RISOLTO]

    Grazie...

    ecco come risolvere
    codice:
    MM_valUsername=CStr(Request.Form("NAME"))
    Query = "select * from USERSRICARICHE where USE_NAME='" & Replace(MM_valUsername,"'","''") &"' AND USE_PASSWORD='" & Replace(Request.Form("PASSWORD"),"'","''") & "' and USE_ACTIVE = 1"
    Scusate sto imparando!

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.