[ mr.marvin @ 27.06.2008. 14:38 ] @
Code:
# Check if "?content=" is OK

try:
    pos = fldMenu["pos"].value
    word = fldMenu["item"].value
    word = word.replace("%2C", ',')
    # log
    dt = strftime("%Y-%m-%d %H:%M:%S")
    if not is_safe(word, pos):
        log_content((dt, os.environ["REMOTE_ADDR"], "not safe", pos, ",", word))
        sys.exit()
    log_content((dt, os.environ["REMOTE_ADDR"], pos, ",", word))
except:
    log_content((dt, os.environ["REMOTE_ADDR"], " invalid fields"))
    print get_textfile("head") % "Error"
    print get_textfile("please_tryagain")
    sys.exit()


Dao sam ovaj kod na brzi uvid u namjeri da saznam jesam li šta ozbiljno zabrljao, i dobio sam odgovor da "bare exceptions" nije dovoljno siguran način za hvatanje grešaka. Da li je to uvijek tako (u CGI) ili je ipak sigurno, pod uslovom da je cgitb isključen? Jer, ako server ne vraća nikakvu poruku o greškama, ne vidim načina da iko sazna išta o skripti ili parametrima naloga na serveru.

Kako da poboljšam kod? Mogu da navdem sve moguće greške, ali opet se teoretski može desiti neka nova.

edit:
Funkcija is_safe() provjerava da li se zahtjev sastoji isključivo od slova, odnosno brojeva (šta već treba za određenu vrijednost).