GDR Play by Chat - Errori comuni postato il 06/10/2011 20:10:36 nel forum programmazione, gdrcd, open source, hosting
Un saluto esteso agli utenti ed in particolare a Gianluca (admin di questo sito).
Dopo diversi anni, mi fa piacere constatare che il virus dei gdr si sia propagato così tanto.
Avrei molte parole da dire dopo parecchio tempo di lontananza, ma racchiudo tutto in questo: quando passeranno 10 o più anni e riguarderete [mi auguro che sussista questo sito per altri parecchi anni ;) ] i vostri vecchi progetti ritornando quì, capirete cosa provo e ho provato in questi giorni.
Bando alle ciance e passiamo al sodo. Questo topic vuole essere utile non chiacchiere, o meglio chiacchiere utili.
Premesso che quanto sto per dirvi l'ho notato sulle ambientazioni che hanno fatto uso del codice "Città Virtuale GPL", ciò non toglie che possano essere indicazioni valide anche per altri.
Solitamente in un game abbiamo:
1) Fase di login e riconoscimento utente
2) Fase di controllo autorizzazion dell'utente (user, master, admin..)
Queste due fasi permettono un controllo sulle azioni dell'utente
nell'ambientazione virtuale da voi realizzata.
Di solito quali sono le aree soggette a controllo ?
A) Area per messaggistica interna
B) Area chat
C) Area forum interno (che diversi chiamano "bacheca")
Quali errori comuni si commettono ?
Parlo per esperienza, perché per primo ho commesso questi errori :-).
Prendiamo come esempio l'area relativa alla messaggistica interna.
[A] Messaggistica interna:
I messaggi solitamente sono composti da:
* mittente
* destinatario
* data invio
* data ricezione [notifica] [opzionale]
* oggetto
* testo del messaggio
Quale potrebbe essere la logica di controllo autorizzazione?
Spedizione messaggio: l'identificativo del mittente dovrebbe essere ricavato preferibilmente dalla "SESSIONE" e non da un campo hidden messo nel codice html del form.
Ricezione-lettura del messaggio: deve essere sempre presente la verifica che il "destinatario" combaci con il nome dell'utente in "SESSIONE"
Cancellazione: per la cancellazione, l'autorizzazione dovrebbe essere concessa solamente al destinatario del messaggio.
Opzionalmente si può permettere che venga cancellata anche dal mittente stesso se il destinatario non ha ancora letto il messaggio, prevedendo un flag di lettura.
Questo perché io mittente potrei sbagliarmi ad iniviare un messaggio.
Quali errori comuni si commettono:
1) Mancanza del controllo sul mittente e sul destinatario.
Avendo una sessione aperta in gioco, diventa molto banale trovare l'url relativo alla funzione di lettura:
http://www.gioco-virtuale.zzz/messaggi/leggi.php?idmessaggio=22
Incrementando o diminuendo tale numero, che succede se mancano controlli ? Ho la possibilità di leggere tutti i messaggi privati.
2) Controlli presenti ma in jscript/ajax con identificativi utente passati via POST o nel peggior caso GET.
Su POST e GET penso non debba spiegarvi la differenza, ci sono molti validi ausili di studio per ogni tipologia di linguaggio scelto.
Riguardo i controlli fatti su javascript, essendo leggibili in chiaro su html è facile eluderli andando a leggere come viene composta la spedizione dei dati del form.
Riguardo i dati identificativi inseriti come campi hidden [esempio: <input name="idutente" type="hidden"...] nell'html del form: ci sono validi ausili e strumenti che permettono di alterare i dati di un form (avendo una sessione aperta nel game) e questo consente ad un qualsiasi giocatore di (nel caso del messaggi di posta).
I controlli in ajax non sono l'ultimo grido innovativo.
Ajax, o meglio l'utilizzo dell'oggetto XMLHTMLHttpRequest, esiste dal 1999. Segue gli stessi commenti detti riguardo javascript.
Se posso consigliare, non abbondate in ajax.
Troppe domande "asincrone" [chiedo venia a chi non comprende] non fanno che appesantire il server che ospita il vostro sito.
Se a quelle richieste sono associate "query" su db come "MySql" potrete notare come le prestazioni peggiorino, ed in caso di hosting free o a basso costo, avrete molti...molti disservizi.
Che fare:
Poche regole ma semplici:
1) I controlli vanno "sempre fatti" in codice. Se avete sviluppato in PHP per esempio, i controlli andranno sempre e comunque fatti nel codice racchiuso sul file PHP.
2) I parametri identificativi è preferibile vengano sempre gestiti, recuperati da oggetti "SESSIONE" e non come dati ottenuti da form com POST o GET.
Si potrebbe dilungare la conversazione anche sulle sessioni e di come vengano gestite da un server. Ma lo spazio richiesto ad argomentare sarebbe ulteriore e forse richiede qualche conoscenza in più che non è alla portata di tutti [non tutti sono programmatori e questo lo dimentico spesso].
Sappiate però che, se il server non è ben configurato, facilmente si potrebbe conoscere il valore di una sessione.
Ma rammentate, se fate un buon controllo sull'input sempre e comunque da codice, potrete togliervi molte magagne :-).
Tanto per dare un suggerimento: http://it.wikipedia.org/wiki/Cross-site_scripting (trovate anche un semplice codice php utile per prevenirlo)
Detto questo, mi scuso se il tutto risulti un pò caotico, o se magari per diversi erano già cose conosciute.
Ma rammentate, se siete giovani, che l'esperienza che acquisite nel gestire un ambiente virtuale e programmandolo, vi ritornerà utile se in futuro sarete webmaster, webdeveloper etc.
Vi permette anche di capire quanto lavoro possa esserci dietro a siti istituzionali, dove la presenza di dati sensibili deve essere tutelata.
Per gli errori .... io continuo a farne :-), di meno, ma ne faccio.
:-) prima o poi crescerò.
Non nascondo il desiderio che qualcuno rilasci un codice open source e free per tutti anche un'ambientazione Trek :-)
E spero qualche temerario inizi a cimentarsi con l'HTML 5 :-).
Ho un sogno nel cassetto di riprendere i vecchi codici, riaggiornali con l'esperienza attuale, ma il tempo viaggia contro purtroppo.
Se riuscirò li vedrete rilasciati nella sezione GDR OPEN SOURCE [sempre se Gianluca mi concede un pò di spazio]
Ringrazio gli amministratori di:
* http://project-galaxy.com
* http://www.dark-frontiers.net
* http://www.starfleetheadquarter.net
per il tempo dedicatomi e a tutti quelli che hanno fatto un'ottimo uso, ancora stento a crederci, del codice rilasciato da Traimo e me.
Grazie infinite :-)
Prospero
Pagine → 1
07/10/2011 11:26:18
Buoni suggerimenti.
Il problema di fondo, Prospero, è che buona parte dei gestori di GDR non è interessata a programmare con criterio ma semplicemente giungere al fine di arrivare ad ottenere la land.
Lo dimostra il fatto ad esempio che un buon 50% delle land in circolazione ( se non di più ) soffre di remote file inclusion, session hijacking, sql injection e per finire cross site scripting.
Perchè al gestore ignorantello di turno piace l'html abilitato che permette di rendere più "figa" la scheda del personaggio.. ( come se fosse più importante che tenere al sicuro il gioco e i dati degli utenti.. sigh ) e il guaio è che non se ne rendono conto, ne hanno intenzione di colmare le proprie lacune anche se devo dire che ultimamente il tema della sicurezza sta guadagnando più attenzione in giro ( anche se personalmente reputo non abbastanza ancora ) rispetto al passato.
Ad ogni modo.. come mai dare il via ad un nuovo progetto anzichè collaborare al miglioramento di qualcuno già esistente ?
Allo stato attuale delle cose, ci sono Accent RPG Engine e GDRCD 5.1 che sono seguiti da diversi utenti ( ogni tanto ).
07/10/2011 11:59:27 e modificato da leoblacksoul il 07/10/2011 11:59:38
Bel post darkiridium :) Ovviamente si potrebbe andare avanti per pagine e pagine nell'aggiungere consigli e regole per la sicurezza.
blancks guadagna 1000 punti stima per il suo post XD
07/10/2011 12:54:19
07/10/2011 13:32:31
07/10/2011 14:26:41
Spassoso :-)
07/10/2011 14:55:04 e modificato da blancks il 07/10/2011 14:58:56
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
venus dormiens ha aperto un annuncio di ricerca: Origo Haeredis - Harry Potter Gdr ricerca Giocatore
Metin2: Server Boost Yohara – Dettagli e FAQ
Ikariam → Su una piccola isola, in qualche parte del Mediterraneo, sorge un`antica civiltà. Sotto la tua guida inizia un`era di ricchezza e di scoperte!
Sea of Conquest: Ci dai una mano ai #PocketGamer Awards 2024?
goldaries ha recensito Games of Thrones Winter is Coming
spike92 ha recensito Il Grande Blu
World of Warship: Aggiornamento 13.11: anteprima
Pandora Upside Down High School → La prima scuola per sovrannaturali al mondo vi attende! Scoprite il vostro cammino Ancestrale relazionandovi con i compagni e le attività dei club
gdr-online.com ha risposto alla discussione: Parere su BrowserGame
W40K Dathyar: Specializzazioni
NosTale: Ora nel NosMall: dolcissimi mini-pet
DarkOrbit: Aggiorna la scatola dell'Apocalisse!
War Thunder → Aviazione, veicoli corazzati e flotte militari della seconda guerra mondiale. Parteciperai a tutte le principali battaglie!
I dati del generatore di rank sono stati aggiornati!
aik ha aperto una nuova discussione: Parere su BrowserGame
eXtremelot: La Bussola dei Cartografi di Lot
Dallas Black Gold: [Trama] JFK Memorial
Pandora Upside Down High School → La prima scuola per sovrannaturali al mondo vi attende! Scoprite il vostro cammino Ancestrale relazionandovi con i compagni e le attività dei club
Gestori dei PbC - Articolo semiserio sui gestori che si possono trovare nei play by chat italiani suddivisi per tipologia!
HarryWeb.net - Intervista al gestore di HarryWeb.net play by forum potteriano!
Inspire City - Intervista ai gestori del play by chat sui supereroi Inspire City... diventa un supereroe o un villains!
Sword of Mystiria - Articolo di presentazione di TSoM a cura di Fantagiochi
Avatar Animati - Tutorial per realizzare un avatar animato con immagine fissa!
Gioco di Strategia - Ti piace la strategia militare? Ecco la lista dei giochi strategici!