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
Shadow Scape: ✨ Land nuovamente aperta!
La Tana del Ladro: ~ Forte Xantharl - La Rocca dei Burroni ~
FragPunk → Gioco d'azione frenetico ispirato al punk, con gameplay caotico, ribelle ed energia illimitata! Gioca gratuitamente!
Dalemyr: Pratoverde, festa in tutti i Reami
Entropia Universe: Note sulla versione di Entropia Universe 18.13.0
Gioco più visitato di Aprile 2025: The Last Sparks - Savannah Tales
Enlisted: Rendiamo Enlisted un posto migliore N° 68
Left to Survive → Left To Survive è un gioco FPS con un'ambientazione post-apocalittica in cui gli Zombi hanno schiavizzato la Terra e ne hanno preso il controllo!
I dati del generatore di rank sono stati aggiornati!
One Piece World: Level Up verso l'unicità
Legacy of Magic: Missione Superstizione IIII
Football Team Soccer: Ultimo numero del nostro magazine!
NosTale → Con l’aiuto della spada e della bacchetta magica risolverai abilmente intricate missioni e domerai coraggiosamente mostri selvaggi!
Enlisted: Saldi di maggio in Enlisted
Raxhodya Yaoi GdR: Nuova Trama: L'incubo Senza Volto
Shadow Scape: ✨ Chiusura momentanea
Metin2 → Sfida i tuoi rivali a battersi con te e dimostra la tua superiorità in questo mondo fantasy!
Never Have I Ever - Intervista alla gestrice di Never Have I Ever, il play by chat ambientato in una scuola del 1999!
Evoluzione D&D - Dungeons & Dragons: Viaggio nel Cuore del Drago: Storia approfondita ed evoluzione di un'icona del GdR!
Giochi Serie TV - Lista completa dei giochi di ruolo online ambientati nel patinato mondo della televisione
I 7 Peccati - I 7 peccati capitali nei Giochi di Ruolo! Scopriamoli!
Giochi 2021 - Le schede di gioco più visitate del 2021! Scopri i giochi che hanno attirato di più l'attenzione!
Codici di Stato HTTP - Guida ai codici di Stato HTTP e relativi errori! Navighiamo informati!
Giochi Scuola - Lista completa dei giochi di ruolo online ambientati nel mondo della scuola o dell'università
Lista Play by Mobile - Lista dei giochi di ruolo play by mobile presenti sul portale