Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Codice di sicurezza...

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    21

    Codice di sicurezza...

    supponiamo di voler fare un form e che si debba ricopiare un numero generato casualmente in un form prima di inviare il messaggio...

    volendo mantenere tutto nello stesso file, io ho pensato ad una cosa del genere:


    Codice PHP:
    <?php
    if(isset($codice))
    {
    session_start();
    if(
    $codice==$_SESSION[key]) fai quello che devi fare... (magari salva i dati in un database)
    else 
    stampa un messaggio di errore...
    }
    ?>

    <form...>
    <input vari />
    <?php
    $num
    =rand(0,9);
    session_start();
    $_SESSION[key]=$num;
    echo(
    "$num"); //questo codice va ricopiato nel form successivo
    ?>
    <input ... value="codice" />
    <input ... invia />
    </form>
    cosa ne dite?
    a parte il fatto che non sono sicuro che funzioni, voi avete qualche suggerimento?
    sono un "programmatore" autodidatta e non so come un professionista possa affrontare un quesito del genere...

    GRAZIE

  2. #2
    Beh, c'è un piccolo problemino. Ci vuole una piccola spiegazione: I controlli di sicurezza col codice da ricopiare, si usano per evitare che l'utente che utilizza la pagina, possa inviare dati in modo continuo ed infinito al server, facendo cosi crashare il database e magari rendere inutilizzabile i file dove ci sono tutti i dati del database. Di solito questi sistemi si usano per evetare attacchi hacker e, proprio per questo, si usano immagini e non testo. Se tu scrivi testo nella pagina, l'hacker in questione che vuole mandarti a benedire il database, basta che faccia il parsing della pagina per individuare, tramite uno script, il codice e cosi baipassarlo senza problemi. Se hai notato, in molti siti usano immagini dove il codice non è scritto in modo uniforme. Quindi la cosa da fare è creare un immagine con questo codice random utilizzando le librerie GD ( Graphic Library ). Dovresti mettere il codice random in una variabile di sessione, facendo cosi in modo da poterla confrontare quando il form invia i dati. Quindi dovresti studiare un po le librerie GD

    prova con questo articolo
    http://php.html.it/articoli/leggi/87...erie-gd-e-php/
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    21
    ti ringrazio, però quello che mi interessa capire è se la forma dello script va bene... in particolare l'uso delle sessioni, che spesso mi lasciano basito in quanto non riesco a farle andare...

    alla fine per fare quello che dici tu mi basta sostituire l'echo con una funzione che mi "disegna" e pasticcia la variabile $num e, a dire il vero, lo avevo già in programma

  4. #4
    Ci sono un paio di cosette che sbagli:
    1) ( es if($codice==$_SESSION[key]) ) le variabili che arrivano dai moduli o dall'url è scorretto ricavarle in questo modo; dovresti invece usare gli array associativi $_POST e $_GET a secondo del tipo di module che usi e, soprattuto, se ne hai la possibilita, di disattivare il register_global nel file di configurazione di php
    2) Le chiavi degli array devono essere racchiuse tra virgolette, esempio $_SESSION['key'] e non $_SESSION[key], perche in questo caso, key, è vista come una costante, non come una stringa: è php che ti fa il piacere di convertirla, ma è scorretto XD

    il codice sembra essere corretto, tranne per il fatto che dovresti mettere il session_start(); fuori dall'if, altrimenti questa riga "$_SESSION[key]=$num; " non avrebbe effetto
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    21
    perfetto... grazie alle tue modifiche funziona tutto.

    ho sistemato gli apici e usato l'array $_POST per ottenere il codice...

    inoltre ho tirato il session_start() fuori dall'if, in modo da non doverlo ripetere prima di $_SESSION[key]=$num;

    cosa succede se uso session_start(); due volte all'interno della stessa pagina? potrebbe crearmi casini?

    ho provato a mettere un "header("Location: ...")" nel caso che il codice di sicurezza sia stato inserito correttamente, ma non funziona... considera l'utilizzo delle sessioni come un output?

    per il momento ho messo un javascript che mi reindirizza la pagina dopo 3 secondi... ci sono alternative che mi permettano di non avere ritardo? impostanto il ritardo del js a 1 millisecondo ottengo un brutto effetto in quanto la pagina mi viene caricata completamente prima di essere reindirizzata...


    GRAZIE MILLE

  6. #6

    .......

    Ciao.
    Un tutorial appena sfornato
    Captcha senza librerie Gd
    Fatemi sapere cosa ne pensate.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Per il refresh usa <meta http-equiv="refresh" content="1;url=pagina.php">
    la sitassi è secondi;pagina.php

    Per il session_start, si, usarne due in contemporanea porta disagi
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

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.