PDA

View Full Version : Php - sicurezza pagine


gabmac2
30-10-2016, 09:35
Esiste qualche framework per mettere "in sicurezza" dai principali attacchi una o più pagine php?
Grazie in anticipo

les2
02-11-2016, 10:25
si e no.
esistono framework che integrano anche gli aspetti di sicurezza ed esistono delle classi, estensioni o best practice da usare (singolarmente o in combinata).

dire "una pagina" è abbastanza riduttivo.
se hai un'applicazione mi aspetto che tu abbia un framework di terze parti o sviluppato ad hoc per aiutarti nella gestione, se usi le sessioni ci si appoggia a loro e i pericoli sono furto di sessione/cookie/crsf, se usi il db devi prevenire attacchi verso il db.

insomma, se mi dai più dettagli provo ad aiutarti ma così ho qualche difficoltà :)

gabmac2
02-11-2016, 11:14
ok,
avendo un insieme di pagine Php "collegate" ad un db Mysql

les2
02-11-2016, 12:20
devi sicuramente prevenire le sql injection,
però i livelli di sicurezza sono vari.

mi serve sapere di più su che tecnologie stai usando e in che contesto (ovvero quanto vuoi essere "sicuro").
ad esempio se usi le sessioni, se le appoggi su db o usi le sessioni di php o ti appoggi sui cookie, se hai la login e la profilazione degli utenti.
se è possibile caricare file. se è possibile scrivere su db o è solo in lettura etc...
o se ad esempio usi php per dare servizi ad altro (app, webservice etc...)

ciao

gabmac2
02-11-2016, 12:57
ok, però la domanda inizialmente era solo riferita al fatto se esistono framework opensource che forniscono questo tipo di servizi
Partire da li e poi vedere ciò che si deve implementare

les2
02-11-2016, 15:14
secondo me stai sbagliando approccio, in ogni caso esistono framework (che non nascono solo per la sicurezza ma per gestire applicazioni intere) che integrano anche gli aspetti di sicurezza o che sono facilmente estendibili.
e sono i soliti framework più famosi di php, per farla breve laravel, phalcon, yii, symfony, slim.

se devi fare una cosa veloce usa slim, integra l'aspetto di crsf (che è il più complicato da fare a mano), per le sessioni cerca sul web qualcosa che faccia al caso tuo e per il db fai sempre l'escape e controlla le variabili.

ma è una cosa che vale su qualsiasi tecnologia :)

Smelt
02-11-2016, 23:21
Come detto dal les2 dire una pagina è forse un po' generico.
Posso suggerirti, dal punto di vista di mysql, di non usare le funzioni standard (mysql_connect, mysql_select_db, mysql_query, ecc) perchè sei a fortissimo rischio di sql injection. Usa invece mysqli che, oltre essere orientato agli oggetti, offre a mio parere un buon livello di sicurezza (almeno io non ho mai avuto problemi da quando lo utilizzo).
Mysqli previene l'sql injection "ripulendo" le query da eventuale codice malevolo usato per accedere al db in modo fraudolento, inoltre ha dei costrutti davvero semlici.
Se hai a che fare con i login usa sempre le sessioni.
Dai un occhio anche ad HTMLPurifier (se guardi la documentazione capisci a cosa potrebbe servirti).

gabmac2
03-11-2016, 07:17
ok,
esistono elenchi "completi" sugli attacchi possibili a Php?

les2
03-11-2016, 09:54
il riferimento è oswap
ad ogni modo ci sono delle best practice prticamente su tutto ormai.
però vanno sempre calate nel contesto e nelle esigenze. un po' come scritto sopra.

esistono anche degli applicativi per fare dei penetration test che aiutano (ma non bastano), ma ci vogliono figure estremamente competenti se si alza il livello. la falla potrebbe essere la versione del web server o una patch mancante etc...

ti faccio un esempio: per due anni hanno bombartado una mia applicaizone dando esito sempre positivo, cambia il fornitore e qualche falla esce (il nuovo era estremamente più competente ed aggiornato).


ps. mysqli ormai sostituisce il precedente deprecato :)