6

Sto sviluppando un progetto su Google app engine (framework webapp). Ho bisogno che voi le persone valutino come gestisco le eccezioni.progettazione per la gestione delle eccezioni - motore di app google

Ci sono 4 tipi di eccezioni sto Manipolazione:

  1. eccezioni Programmazione
  2. ingresso
  3. URL non corretti Bad utente
  4. stringhe di query non corretti

Ecco come gestire loro:

  1. Ho sottoclassi la classe webapp.requesthandler e ho annullato il metodo handle_exceptions. Ogni volta che si verifica un'eccezione, porto l'utente a una pagina amichevole "ci dispiace" e nel frattempo inviamo un messaggio con il traceback agli amministratori.

  2. Sul lato client, utilizzo (j) e convalida anche sul lato server. Qui immagino (come programmatore con esperienza non web) oltre a convalidare gli ingressi in base alla logica di programmazione (controllare: l'input in contanti è di tipo float?) E le regole aziendali (controllare: l'utente ha abbastanza punti per intraprendere quell'azione?), Devo anche verificare le intenzioni malevole. Quali misure dovrei prendere nei confronti di azioni dannose?

  3. Ho un URL catch-all che gestisce gli URL non corretti. Vale a dire, porto l'utente in una pagina personalizzata "pagina inesistente". Qui non ho problemi, penso.

  4. Le stringhe di query errate generano presumibilmente eccezioni se lasciate a se stesse. Se un ID non esiste, il metodo restituisce None (è in corso un'eccezione). se il parametro è inopportuno, il codice solleva un'eccezione. Qui penso di dover aumentare un 404 e portare l'utente alla pagina personalizzata "pagina inesistente". Cosa dovrei fare?

Quali sono le tue opinioni? Grazie in anticipo ..

+1

Non c'è motivo di fare convalida per input malevoli dal lato client - qualsiasi utente malintenzionato lo disabiliterà o lo eleverà. –

+0

ok, cosa devo fare sul lato server? – shanyu

risposta

5

Sembra che tu abbia pensato bene le cose. L'unica cosa che vorrei aggiungere è che potresti voler dare un'occhiata a Bloog come esempio. Bloog è un motore di blog open source molto ben scritto e popolare per App Engine scritto in Python.

Inoltre, al punto 2, fare attenzione agli attacchi these types degli Cross Scripting.

Per quanto riguarda il numero 4, tenere presente che 404 pagine sono un'opportunità per aggiungere un po 'di color and creativity alla progettazione.

+0

Grazie, lo farò. Qualche suggerimento sui punti 2 e 4? – shanyu

+0

Ho aggiornato la mia risposta per aggiungere alcuni commenti su # 2 e # 4. Sembra che tu lo abbia già pensato abbastanza bene. – Serx

+0

Grazie, ancora. Passerò attraverso i link che hai fornito. – shanyu

0

Ad. # 4: di solito tratta le stringhe di query come non essenziali. Se qualcosa non va con la stringa di query, vorrei solo presentare la pagina di risorse nude (come se non fosse presente alcuna query), possibilmente con alcune informazioni per l'utente su cosa c'era di sbagliato nella stringa di query.

Questo porta al problema simile al tuo n. 3: come ha fatto l'utente a inserire questa domanda errata? La mia applicazione ha prodotto URL errati da qualche parte? O era un collegamento obsoleto in qualche servizio esterno o un segnalibro salvato? HTTP_REFERER potrebbe contenere qualche indizio, ma ovviamente non è autorevole, quindi dovrei registrare la query problematica (con alcune intestazioni HTTP aggiuntive) e provare a indagare sul caso.

+0

Grazie per la risposta. Immagino che uno dei motivi che porta al punto 3 sia che un utente prova qualcosa di "non necessario" modificando la querystring. – shanyu