GDR Play by Chat - Errori comuni
GDR Play by Chat - Errori comuni postato il 06/10/2011 20:10:36 nel forum programmazione, open source e 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
blancks ha scritto: Buoni suggerimenti.
(1)
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.
<<cut>>
(2)
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 ).
Blancks ricordiamoci alcuni aspetti.
Mi piace metterli in ordine:
(1) Chi si cimenta spesso ha un'età scolare, quindi il "tutto e subito" "ricco e bello" "colorato è meglio" come pure "non calcolare i rischi" "fare pazzie" è soggetto all'età :-).
Anche noi, o per lo meno io, alla loro stessa età ho fatto lo stesso.
(2) Quì ricadiamo sulla tendenza che c'è oggi e su di una diatriba infinita. Usare o no una sorta di Framework (raccolta script già belli che pronti) altrui ?
Perché nascono nuovi framework invece di consolidare quelli esistenti e usati per la maggiore ?
Ti dico questo per mia esperienza: quando si fa tutto da se dall'inizio alla fine si ha la piena soddisfazione del proprio lavoro ed esperienza acquisita dai propri errori.
Ci sono coraggiosi ragazzi che si stanno cimentando di sana pianta nel realizzare i loro progetti. Li ammiro e li stimo.
Chi invece si abitua a rimanere sul, diciamo semplice livello di framework, difficilmente imparerà se non si cimenterà a capire cosa c'è sotto il cofano.
E come puoi ben vedere, chi per la maggiore vuole tutto e subito solo perché si vuole sentire importante [non dimentichiamo il contesto in cui commentiamo] passata a diversa età, con impegni e desideri diversi, finisce per abbandonare del tutto per dedicarsi ad altro.
Anche in questo caso rispetto comunque quel, magari "pessimo" progetto, ma che comunque diventa parte di esperienza nella vita di chi ha tentato.
IMHO la penso così :-)
07/10/2011 13:32:31
darkiridium ha scritto:
(1) Chi si cimenta spesso ha un'età scolare, quindi il "tutto e subito" "ricco e bello" "colorato è meglio" come pure "non calcolare i rischi" "fare pazzie" è soggetto all'età :-).
Anche noi, o per lo meno io, alla loro stessa età ho fatto lo stesso.
Non direi spesso, ma succede si anche se più che dall'età secondo me dipende dall'indole di una persona: per quel che mi riguarda sono sempre stato molto paziente e costante, anche durante la mia fase adolescenziale.
Ti dico questo per mia esperienza: quando si fa tutto da se dall'inizio alla fine si ha la piena soddisfazione del proprio lavoro ed esperienza acquisita dai propri errori.
Ci sono coraggiosi ragazzi che si stanno cimentando di sana pianta nel realizzare i loro progetti. Li ammiro e li stimo.
Chi invece si abitua a rimanere sul, diciamo semplice livello di framework, difficilmente imparerà se non si cimenterà a capire cosa c'è sotto il cofano.
Assolutamente, il mio discorso non implica il fatto che non possa studiarti cosa c'è sotto il cofano.
E' una cosa che faccio in prima persona tutt'oggi: studio, imparo, applico e sono soddisfatto nell'aver appreso qualcosa di nuovo, ma da questa piccola realizzazione personale all'inaugurazione di un nuovo progetto è tutt'altra cosa: inauguro un nuovo progetto quando sento che c'è realmente necessità dell'idea che sto sviluppando, poi per carità ognuno è (ovviamente) libero di fare le scelte che vuole e di condividere/implementare il codice che più ritiene opportuno per i suoi scopi. Il free software rappresenta anche questo, la volontà di imparare e di migliorarsi.
E come puoi ben vedere, chi per la maggiore vuole tutto e subito solo perché si vuole sentire importante [non dimentichiamo il contesto in cui commentiamo] passata a diversa età, con impegni e desideri diversi, finisce per abbandonare del tutto per dedicarsi ad altro.
Ahimè.. non è del tutto vero, anzi spesso ho riscontrato il contrario: casi in cui trentenni erano mentalmente meno maturi sotto questo punto di vista rispetto ai sedicenni.
Anche qui, dipende dagli individui.
Anche in questo caso rispetto comunque quel, magari "pessimo" progetto, ma che comunque diventa parte di esperienza nella vita di chi ha tentato.
IMHO la penso così :-)
Qui sono completamente d'accordo con te, non critico sterilmente un prodotto a mio modo di vedere scadente se esso denota l'impegno e la volontà di apprendere.
Provo piuttosto a fornire suggerimenti, far capire dove e come migliorare ma spesso l'orgoglio degli individui è una brutta bestia e spesso si legge solo quel che si vuol leggere (sapessi quante me ne sono capitate commentando i pbc a lato).
Quel che personalmente non rispetto, o meglio, non considero è il tipico lavoro di 20 minuti che consiste nel caricare un cms su altervista, cambiare due sfondi ed aprire il sito: quello non è indice di apprendimento.
07/10/2011 14:26:41
Spassoso :-)
Ahimè.. non è del tutto vero, anzi spesso ho riscontrato il contrario: casi in cui trentenni erano mentalmente meno maturi sotto questo punto di vista rispetto ai sedicenni.
Anche qui, dipende dagli individui.
Sono rimasto stupito, infatti non mi stupisce se in facoltà universitarie ci sia chi abbia fatto tesi di psicologia sul comportamento nei GDR specie da persone che .....dovrebbero essere in età matura :-)
Quel che personalmente non rispetto, o meglio, non considero è il tipico lavoro di 20 minuti che consiste nel caricare un cms su altervista, cambiare due sfondi ed aprire il sito: quello non è indice di apprendimento.
Hai ragione, sono sicuro che al riguardo Gianluca e lo staff prima di inserire una recensione od un progetto, facciano la dovuta scrematura.
Come hai notato te, non tutti hanno l'indole di apprezzare quando gli vengono dati consigli. E nel mondo lavorativo il fenomeno è esponenzialmente maggiore.
Non mi stupirebbe immaginare che quello stesso tipo di persone (parliamo di adulti) siano magari dietro ad alcuni progetti ...assai ...diciamo discutibili.
Quando incontriamo soggetti simili, che giustamente non sono in grado di distinguere un aiuto da chi lo offre gratuitamente, l'unica arma che abbiamo per combatterli o per farli crescere è ignorarli e non dedicando certo tempo :-).
Da anni mancavo da queste parti, sono sicuro che ne avrai raccolte di esperienze :-). Se non c'è nel forum, sarebbe simpatica una sezione (sempre in modo anonimo) dove segnalare i casi più disperati in lettura comica (sempre nel rispetto delle persone).
Grazie per i commenti, li ho apprezzati.
07/10/2011 14:55:04 e modificato da blancks il 07/10/2011 14:58:56
darkiridium ha scritto:
Sono rimasto stupito, infatti non mi stupisce se in facoltà universitarie ci sia chi abbia fatto tesi di psicologia sul comportamento nei GDR specie da persone che .....dovrebbero essere in età matura :-)
Dovrebbero.. sigh.
Hai ragione, sono sicuro che al riguardo Gianluca e lo staff prima di inserire una recensione od un progetto, facciano la dovuta scrematura.
Fanno un ottimo lavoro a tal proposito https://www.gdr-online.com/segnalazioni_con_problemi.asp ↗
Se non fosse così la colonna di sinistra sarebbe piena di spazzatura.
E nel mondo lavorativo il fenomeno è esponenzialmente maggiore.
Ti assicuro che è ancora più ampio se sei pure quello più giovane...
Non mi stupirebbe immaginare che quello stesso tipo di persone (parliamo di adulti) siano magari dietro ad alcuni progetti ...assai ...diciamo discutibili.
Quando incontriamo soggetti simili, che giustamente non sono in grado di distinguere un aiuto da chi lo offre gratuitamente, l'unica arma che abbiamo per combatterli o per farli crescere è ignorarli e non dedicando certo tempo :-).
Il web è vasto: anche ammesso che io li ignori ci sarà sempre qualcuno che gli presta (la non dovuta) attenzione per cui è difficile che tali individui cambino.
Per far cambiare loro dovrebbero cambiare meccaniche alla base del relazionamento sociale tra gli individui e questo è pressochè impossibile se non nel corso di periodi estremamente lunghi: la collettività non cambia il modo generico di pensare perchè qualcuno gli dice di farlo, anche se.. si può sicuramente influenzare (ma qui si affronta un discorso che meriterebbe un trattato di psicologia per essere esplicato per bene).
Da anni mancavo da queste parti, sono sicuro che ne avrai raccolte di esperienze :-). Se non c'è nel forum, sarebbe simpatica una sezione (sempre in modo anonimo) dove segnalare i casi più disperati in lettura comica (sempre nel rispetto delle persone).
Grazie per i commenti, li ho apprezzati.
Qualcosa di simile c'è, è un topic che venne aperto qualche tempo fa: https://www.gdr-online.com/readforum.asp?id=117055 ↗
Per il resto di nulla, apprezzo anche io gli scambi di opinioni quando la controparte è loquace e aperta :-)
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Crossout ↗
Seconda Era ↗
Raja Dunia ↗
Sea of Conquest ↗
World of Tanks ↗
Tibia ↗