• User Attivo

    guru? per così poco? 🙂

    Occhio che effettuare come minimo il replace degli apici è fondamentale per la sicurezza di una pagina di accesso ad un'area riservata, qualora questa effettui il controllo dei dati di accesso attraverso un database.

    Altrimenti saresti esposta ad SQL INJECTION

    Es. di query ERRATA e penetrabile:

    
    "SELECT * FROM utenti WHERE nome = '"&Request("nome")&"' AND psw = '"&Request("psw")&"'"
    
    ``` In questo caso inserendo come nome utente e psw i seguenti valori:
    
    nome: **' or '' = '**
    psw: **' or '' = '
    **
    si otterrebbe la selezione del primo record della tabella, di solito quello con ID = 1
    ** 
    Attenzione perchè questo errore è molto diffuso tra i neofiti
    
    **PS: vada per la cena

  • User

    Erano MESI che ci provavo e non riuscivo nè qualcuno era stato capace di darmi una mano; adesso ho fatto tutte le modifiche e pare che funzioni, ho provato a mettere cose copiate e incollate e a scriverne a mano pare che vada. Tranne a un tentativo in cui mi ha detto che "data mismatch in criteria expression" ma credo fosse perchè in un campo data era rimasto "inserire data" anzichè un formato data 00/00/0000. Me lo confermi? O mi devo preoccupare?:?
    Invece (ahime) la modifica nonostante i tuoi suggerimenti continua a prendere solo le prime due parole del titolo, e non so proprio come fare... ti prego dammi una mano!!!
    Cmq avrai passato anche tu (e spero stia tuttora passando) quei momenti in cui credi di aver scoperto l'acqua calda e ti senti fiero di un piccolo passo avanti che a distanza di anni ti fa ridere... lo provi quasi per tutte le cose!! Una lingua, un programma o un sito! Ecco per me oggi è uno di quei giorni!:D


  • User Attivo

    Ti capisco benissimo.. ancora oggi le nuove scoperte mi lucidano gli occhi 😄

    Certo che l'errore "data mismatch in criteria expression" è dovuto a quello che dici.

    Ma veniamo al secondo problema... aspetta che sto pensando :mmm:


  • User Attivo

    è un errore html... hai mancato le virgolette dell'attributo value:

    <input name="titolo" type="text" size="50" value="<%=news.fields("titolo")%>">

    Avrebbe dovuto spezzarsi al primo spazio


  • User

    Se può aiutarti (non credo!) mi prende solo la prima parola del titolo.
    Nella pagina che mostra le news c'è un link che consente di cancellare o modificare la news, con questo codice:

     
     <%
      'creo il recordset news e chiedo al db di elencare le news all'interno del db
      set news=dbconn.execute("select * from news order by idnews desc")%>
     <% 'leggo tutti i record fino alla fine del file
      do while not news.eof%>
    <a href="dettaglio_news.asp?idnews=<%=news("idnews")%>"><strong><%=news("data")%>&nbsp;<%=news("titolo")%></strong></a> <a href="elimina_news.asp?idnews=<%=news("idnews")%>">Elimina</a> <a href="modifica_news.asp?idnews=<%=news("idnews")%>">Modifica</a></td>
    
    

    Nella pagina delle modifiche il codice (l'ho anche modificato come avevi detto tu) è così:

     
    <%if request.QueryString("action")="" then%>
    <%set news=dbconn.execute ("select * from news where idnews="&int(request.querystring("idnews")))%>
    <fieldset style="border:1px solid gray;">
    <legend><strong>MODIFICA UNA NEWS NEL DATABASE</strong></legend>
    <form name="form1" method="post" onsubmit="return controllaINSERIMENTO(this)" action="modifica_news.asp?action=register">
    <table width="50%" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
    <td><input type="hidden" name="idnews" value="<%=news.fields("idnews")%>"></td></tr>
    <tr>
    <td><strong>Data</strong></td>
    <td><input name="data" type="text" size="50" value=<%=news.fields("data")%>></td>
    </tr>
    <tr>
    <td><strong>Titolo</strong></td>
    <td><input name="titolo" type="text" size="50" value=<%=news.fields("titolo")%>></td>
    </tr>
    <tr>
    <td><strong>Abstract (introduzione)</strong></td>
    <td><textarea name="abstract" cols="60" rows="10"><%=news.fields("abstract")%></textarea></td>
    </tr>
    <tr>
    <td><strong>Testo</strong></td>
    <td><textarea name="testo" cols="60" rows="10"><%=news.fields("testo")%></textarea></td>
    </tr>
    <tr>
    <td><strong>Autore </strong></td>
    <td><input name="autore" type="text" size="50" value=<%=news.fields("autore")%>></td>
    </tr>
    <tr><td><strong>Immagine</strong></td>
    <td><input name="immagine" type="text" size="50" value=<%=news.fields("immagine")%>></td>
    </tr>
    <tr><TD>&nbsp;</TD>
      <td><input type="submit" name="submit" value="Modifica">&nbsp;<a href="amministrazione.asp" target="_self">Cambiato idea? Clicca qui!</a>
    </td>
    </tr>
    </table>
    </form>
    </fieldset>
    <%else
    id=request.form("idnews")
    data=request.form("data")
    titolo=Replace(request.form("titolo"),"'","''")
    abstract=Replace(request.form("abstract"),"'","''")
    testo=Replace(request.form("testo"),"'","''")
    autore=Replace(request.form("autore"),"'","''")
    immagine=request.form("immagine")
          'AZIONE DI REGISTRAZIONE
       set rds_news=dbconn.execute ("UPDATE news SET data='"&data&"', titolo='"&titolo&"', abstract='"&abstract&"', testo='"&testo&"', autore='"&autore&"', immagine='"&immagine&"' WHERE idnews="&id&"")%>
    
    
    

    Non so dirti di più...


  • User Attivo

    Ti ho già risposto sopra 🙂


  • User

    🙂 Sei troppo intelligente!!!! L'avevo visto ma siccome tutti gli altri campi funzionavano, incluse le textarea e tutto il resto non mi ero posta il problema... come mai funzionano lo stesso?? E' un problema solo per campi di testo?:yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :vai:


  • User Attivo

    @katy82 said:

    🙂 Sei troppo intelligente!!!! L'avevo visto ma siccome tutti gli altri campi funzionavano, incluse le textarea e tutto il resto non mi ero posta il problema... come mai funzionano lo stesso?? E' un problema solo per campi di testo?:yuppi: :yuppi: :yuppi: :yuppi: :yuppi: :vai:
    Le textarea non vuole le virgolette, potresti anche evitarle per il textfield solo evitando gli spazi. Perchè?

    Perchè il browser non potendo sapere dove termina il testo che stai immettendo nel campo testo allora si ferma al primo spazio in quanto lo interpreta come separatore di attributi

    <input type="text" name="textfield" value=prova test>

    In questo esempio il browser crede che test sia un attributo così come lo è type, name e value. Ovviamente non lo riconosce e lo lascia pardere.

    Con la textarea è differente, il browser interpreterà come valore del campo tutto quello compreso tra <textarea> e </textarea>

    PS: a base di pesce, porto io il vino 😄


  • User

    Mi inchino alla tua sapienza e mi imbarazzo per la mia ignoranza! A presto l'invito per una cena a base di pesce (si vede che sei dalle parti di ischia, noi polentoni del piemonte conosciamo solo la bagna caoda!)!!! Grazie davvero di tutto!!!!!!


  • User Attivo

    Ehehe ciao 🙂