Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32

    [PHP] Come Invio dati di nascosto?

    Ciao, sono Stefano.
    Allora vi racconto la mia storia (drammatica)

    Io ho creato un giochino a punti. (il gioco è un exe)
    Praticamente ho un DB mysql in un mio dominio, e vorrei fare in modo di poter inviare il punteggio, a una pagina PHP.

    Pensavo ad una cosa tipo:
    Finisco il gioco e faccio 35 punti.
    Il gioco chiama la pagina:

    XXXXX.com/classifica.php?punteggio=35&nome=pontino

    Però, però... Non va per niente bene. perchè se l'utente non è utonto và direttamente a digitare:
    XXXXX.com/classifica.php?punteggio=9999999999999999999999999 &nome=pontino

    Vorrei inviare questi dati in modo che l'utente non possa barare. pensavo di inviare un HASH del nome utente, password e punteggio, ma non saprei in che modo fare.. Anche perchè devo fare in modo che questo hash non sia tipo MD5 che poi non posso più invertirlo..

    Avete in mente qualche idea?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    Un'altra cosa (scusate il doppio post)
    Non so nulla di crittografia, sò che c'entra qualcosa, ma non so come implementarla..

  3. #3
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    non scomodare la clittografia:
    invii al server questa stringa
    XXXXX.com/classifica.php?punteggio= 9999999999999999999999999&nome= pontino&key= b4dd7f0b0ca6c25dd46cc096e45158eb

    dove il valore di key (b4dd7f0b0ca6c25dd46cc096e45158eb) altro non è che l'md5 eseguito così (scrivo la sintassi in php)

    md5($punteggio.$key.'parolasegreta');

    chi non conosce la parola segreta non puo inviare dati veri
    la parola segreta però sarà contenuta nell'exe, ma per trovarla bisogna aprire il programma con un editor esadecimale e se prorpio sei maniaco della sicurezza puoi ad esempio parla scorrere in la (cifratura di cesare) di qualche byte oppure proteggerla con qualche altro algoritmo piu potente, in modo che per scoprirla ci sia bisogno di reversare il programma...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    Interessante questo metodo. Mi chiedo perchè non ci sia arrivato prima :master:

    Visto che nell'applicazione vorrei che ogni volta che l'utente deve inviare un punteggio debba mettere nome e password.. posso fare così:

    invio blabla.php?nome=pontino&punti=66&key=543a5dvafdtav a5avghab
    dove key è uguale a md5($nome.$password.$punteggio)
    Poi nella pagina php estrapolo la password dell'utente e il gioco è fatto..

    Mi sorgono però in mente alcuni dubbi. Se io sono furbastro e rifaccio blabla.php?nome=pontino&punti=66&key=543a5dvafdtav a5avghab un sacco di volte?

    Questo metodo andrebbe bene se faccio una classica classifica:
    io faccio 35 punti e mi collega alla pagina con tutte le info..
    copio il link e lo ridigito..
    Il sistema creato da me va a cercare se il nome è già presente nella classifica: se è presente va a controllare se il punteggio reinviato è maggiore. Se è maggiore allora cancello il vecchio record e ci inserisco il nuovo..
    Se io baro ripetendo l'URL creato dall'applicazione, non succede niente, perchè il punteggio è invariato, e non creo doppioni nella classifica, e se provo a modificare il punteggio la comparazione delle keys non è valida.

    Ma se la mia classifica è di tipo cumulativo? Come faccio a controllare se il balordo bara o no?
    Pensavo di fare controlli sul tempo e l'ora, ma purtroppo l'ora locale può non coincidere con l'ora del server, e possono riscontrarsi errori falsi.

    (mi sto facendo tutti sti pensieri perchè i punteggi equivalgono a premi e soldi, perciò sono un po' maniacale :P)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    a meno che non mi trovo un algoritmo per creare hash reversibilil...
    Avete qualche idea?

  6. #6
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    dunque, innanzitutto un hash reversibile non è un hash ma un algoritmo di clittografia...

    comunque se vuoi un punteggio con anche la password per verificare l'utente puoi risolvere così:

    md5($nomeutente.$passwordutente.$punteggio.$key);

    per risolvere il problema della classifica cumulativa l'unico modo che ora mi viene in mente è che il client exe scarichi da una pagina del tuo sito di cui poi crea il link un codice che vale una volta sola (generato e salvato sul server quando il client lo richiede) da aggiungere di volta in volta al posto della $key...
    md5($nomeutente.$passwordutente.$punteggio.$codice monouso);
    e l'invio rimane invariato blabla.php?nome=pontino&punti=66&key=...

    usato il codice una volta viene disattivato sul server....


    se nn ti piace questo sistema ne ho un altro 'matematicamente' piu carino

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    32
    Ah ok ho capito, l'hash è sempre one-way.
    Qual è il metodo matematicamente più carino?

  8. #8
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Per l'hash, inserire solo nome e password dell'utente potrebbe risultare inutile. In questo modo infatti posso generarmi tutti gli hash md5 che voglio, visto che conosco sia nome utente che password.
    Ti conviene inserire anche una parola segreta scelta e conosciuta solo da te, come aveva proposto inizialmente mamo.

    Per quanto riguarda la classifica cumulativa potresti aggiungere all'hash anche un timestamp, il fatto che sia locale ha relativamente poca importanza. Memorizza anche l'hash nel DB ed ogni volta che ti viene inviato un nuovo punteggio controlla l'hash inviato con quelli presenti nel DB. Poichè non è possibile fare lo stesso punteggio nello stesso istante puoi essere sicuro che un punteggio "onesto" avrà un hash diverso da tutti gli altri.

    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  9. #9
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da Leo15
    Per quanto riguarda la classifica cumulativa potresti aggiungere all'hash anche un timestamp, il fatto che sia locale ha relativamente poca importanza. Memorizza anche l'hash nel DB ed ogni volta che ti viene inviato un nuovo punteggio controlla l'hash inviato con quelli presenti nel DB. Poichè non è possibile fare lo stesso punteggio nello stesso istante puoi essere sicuro che un punteggio "onesto" avrà un hash diverso da tutti gli altri.

    ci avevo pensato anche io, ma se il server che riceve il link non conosce il tempo non puo controllare se la password non è stata inserita correttamente o se il punteggio sia valido....

    insomma dal .exe non possiamo mettere dentro l'md5 nessun dato che il server non ha a disposizione...

    ora esco, quando torno a casa fra qualche ora posto l'altra soluzione che mi era venuta in mente

  10. #10
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Originariamente inviato da mamo139
    ci avevo pensato anche io, ma se il server che riceve il link non conosce il tempo non puo controllare se la password non è stata inserita correttamente o se il punteggio sia valido....

    insomma dal .exe non possiamo mettere dentro l'md5 nessun dato che il server non ha a disposizione...

    ora esco, quando torno a casa fra qualche ora posto l'altra soluzione che mi era venuta in mente
    Si, sarebbe necessario inviare il timestamp anche nei parametri in chiaro.

    Aspetto l'altra soluzione, non sia mai che possa servire anche a me
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

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.