Benvenuto nella nostra community, registra un account gratuito ADESSO!
Oltre 7000 persone hanno già registrato il loro account.
Chiedi aiuto, conversa con aziende ed esperti del settore webhosting italiano.
Iscriviti subito! In meno di 2 minuti!
Ehm,
E' questo che intendevo nell'altro post...Adesso, è Agosto 2009 e credo di aver abbandonato definitivamente il progetto.
L'ultima versione rilasciata è la 2.2.5..
Un bel JS che oscuri il sito con su scritto PROGETTO ABBANDOPNATO E VULNERABILE DA MYSQL INJ?
Giorgio (GrG) Bonfiglio
Cloud Evangelist, System/Network Engineer
http://blog.grg-web.eu/ http://www.giorgio-bonfiglio.tel/
Adesso ho ripreso un po' il progetto, non lo lasciero' finchè non arriverò ad una versione soddisfacentemente sicura.
Ecco,
sto lavorando alla 2.5.
Grafica rinnovata, molti bugs risolti e sopratutto ho integrato come forum la mia bulletin board: Blizard BB.
Vorrei sapere da voi esattamente se ci sono bug e dove..
qualcuno mi aiuti.
I Get, i post e le sessioni gli ho fixati con stripslashes.
Cosa devo fare piu??
Ora ci sono parecchi errori di sintassi nel codice
In ogni modo per proteggerti dalle vulnerabilità c'è un modo molto veloce e sicuro, basta usare (int) come nell'esempio sotto.
Però devi assicurarti di avere nel db un campo 'id' con un valore numerico (puoi anche chiamarlo 'pippo', ma l'importante è che sia numerico il valore) che identifichi la pagina.
Guarda l'esempio:
<?php
//
$scms_get_id = (int) $_GET['id'];
// controllo che ci sia stata una richiesta $_GET['id']
if(isset($_GET['id']))
{
// Accedo e prendo i dati della pagina nel db
$tab = mysql_fetch_array(mysql_query("SELECT * FROM pagine WHERE id='$scms_get_id'", $connessione_al_db));
// Stampo i dati nel db sulla pagina
echo $tab['titolo_pagina'];
}
?>
A parte il fatto che adesso tutto il sito ha un problema di include e che non ho tempo di vedere tutto il codice.... però ad occhio, solo guardando il sorgente html, senza neanche scaricare i codici sorgenti php, mi pare che passi dal form la password in chiaro.
Implementa un sistema hash+salt e di conseguenza memorizza le password in db non in chiaro.
Questo per dirti in 2 secondi cosa può trovare uno. Sia chiaro che non è una predica o una critica sterile e cattiva, ma dovresti toglierlo dal download, non avresti neanche mai dovuto mettercelo, prima di aver studiato tutte queste cosine. L'esercizio e l'iniziativa di voler creare qualcosa è da lodare, ma non si può partire in quarta a distribuire dopo aver imparato a mettere su un file 4 if, echo, function etc....
Per cercare di farti comprendere alcuni concetti di programmazione collaterali, tu parli di una versione 2 quando dovresti considerarla si e no 0,02 qualcosa cioè non ancora pronta per la versione stabile ma ancora in lavorazione.
Una versione 2 presuppone che ci sia già una versione 1 buona, ben funzionante, distribuita e usata e la versione 2 porti modifiche strutturali di una certa entità (se sono solo bugfix e leggere modifiche si usano i decimali di solito per esempio 1.1, 1.2 o 1.11 etc...)
Ok,
una cosa alla volta.
mi pare che passi dal form la password in chiaro.
Implementa un sistema hash+salt e di conseguenza memorizza le password in db non in chiaro.
In che senso?
La password nella tabella del database è criptata in md5.
È già bene che non sia in chiaro nel db (md5 non cripta, crea un hash), ma sul form passa in chiaro, o sbaglio?
Comunque probabilmente non è solo quello il problema (per esempio non indago quell'admin e quei valori in chiaro su un cookie, ma ho la vaga idea che se mi costruisco un cookie su misura non mi serve neanche inserire la password) e non puoi sperare che qualcuno si metta a dirti pezzo per pezzo cosa non va, magari scaricando il codice per studiarlo.....
P.s. il demo ha gli include che non vanno
Ciao,
il fixCodice PHP:$var = (int) htmlspecialchars(stripslashes($_GET['id']));
l'ho detto per sarcasmo.
Non servono tutte quelle protezioni, perchè se tu passi solo un numero alla variabile devi assicurarti solo di mettere (int) che fa già lui il controllo se l'input è un numero o no.
Piuttosto htmlspecialchars() e stripslashes() li userei per gli input che vengono passati via $_COOKIE e $_POST (a meno che tu non ti aspetti solo input numerici).
PS. Sinceramente mi metterei a riscrivere il codice del tuo CMS. Non solo per l'aspetto della sicurezza altamente trascurato, ma anche per scrivere un codice meglio strutturato e dar più possibilità a programmatori seri di contribuire alla scrittura del codice base e nuovi plugin.
Per esempio ho notato (header.php linea: 20) questo:
e mi sono preso uno spaventoCodice PHP:if ($install == "no"){
} else {
$head_get=$_GET['page'];
oppure:
cosa serve usare htmlentities?Codice PHP:htmlentities($_SERVER['PHP_SELF'])
A meno che tu non fai un echo/include/.. su $_SERVER['PHP_SELF'] non serve
Ti do una mano con il codice se ti interessa, solo per struttura e sicurezza![]()
uhm, io quando scrivevo codice come un ossesso cercavo di non passare mai testo alle GET, ma solo numeri in modo da fargli un bel intval() quando li vado a riprendere dopo... si risolvono tanti ma tanti problemi.. ovvio, sempre se sia possibile farlo.
Poi boh, vedete voi, è solo un piccolo consiglio personale, ognuno ha i suoi metodi.
Gran peccato abbandonare i progetti
Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)
Segnalibri