Newsgroup: it.comp.www.php
Titolo: Proteggere una pagina di un sito così è sicuro?

Salve a tutti!
Volevo sapere se secondo voi la seguente procedura di autenticazione è
sicura o no.
Nella pagina principale del mio sito metto un form con metodo post e
action=accedi.php. Nel form inserisco due campi user e pass.
Poi strutturo la pagina accedi.php in questo modo:
$user=$_POST['user'];
$pass=$_POST['pass'];
if (($user=="userok") && ($pass=="passok")) {
echo <<<END;
contenuto privato protetto
END;
}else {
echo <<<END;
autorizzazione negata
END;
}
E' sicuro o no? Quali sono le falle di questo sistema? E' possibile
scaricare in qualsiasi modo (vedi programmi tipo Download Accelerator) il
sorgente del file php e attraverso quello ricavare oltre che il contenuto
protetto anche user e pass? E nel caso, è facile farlo?
Ogni suggerimento è graditissimo!
Ciao
Francesco 

 Ogni suggerimento è graditissimo!
Lo script deve proteggere solo una pagina oppure no? Nel secondo caso, 
manca qualcosa, modello la sessione
	Francesco

 protetto anche user e pass? E nel caso, è facile farlo?
Se hai installato php sul server (e beh...altrimenti che parliamo a 
fare?) :-) non è possibile visualizzare il sorgente della pagina php.
Per scaricarlo, si dovrebbe ad esempio disporre di password e username 
ftp (se ad esempio fai in quel modo l'upload dei file sul server).
Riguardo la "sicurezza", dal momento che invii i dati in chiaro al 
server, uno sniffing ti fa vedere preciso senza problemi sia l'username 
sia la password. Quindi o usi trasferimento dati sicuro (vedi SSL), 
oppure leggi il thread scritto qualche giorno fa (2 novembre 2006: 
"Criptare un form").
ciao,
rob4you

 manca qualcosa, modello la sessione
Solo quella pagina, o meglio, la parte racchiusa tra l'echo e l'END.
Ciao
--
Francesco 

 ftp (se ad esempio fai in quel modo l'upload dei file sul server).
Perfetto... era quello che mi interessava.
Grazie mille
Ciao
--
Francesco 

 if (($user=="userok") && ($pass=="passok")) {
if (($user==="userok") && ($pass==="passok")) {
;)
poi per la massima paranoia se tu hai pass e user piatti con numeri e
lettere e basta tipo dD3F4f4f4F  che e' un pwd gia' forte, ti conviene
mettere htmlspecialchars  o addslashes  ;)
in questo modo se immetto qualche carattere alieno lo rendi innoquo in
ogni caso... massima paranoia eh!

 ;)
mmm... perche tre uguali? :s

 ;)
mmm... perche tre uguali? o_O

 mmm... perche tre uguali? o_O
Una lettura del manuale sarebbe mooolto chiarificatoria! :-)
Cita il manuale:
$a == $b    ___Uguale___    TRUE se $a è uguale a $b.
$a === $b   ___Identico___    TRUE se $a è uguale a $b, ed essi sono 
dello stesso tipo. (Dal PHP 4)
rob4you

 rob4you
grazie

Si teoricamente è corretto. Però due appunti:
1 - La tua pagina che controlla che la coppia username e password sia
corretta è troppo rapida. Un programma che tenta tutte le combinazioni
possibili della password sapendo l'username avrebbe vita facile (si fa
per dire). Secondo me dovresti rallentare il controllo di
autenticazione con un'attesa lato server. Tanto... è una di quelle
cose che se dura due secondi invece di 0.001 non è poi fondamentale.
2 - Potresti aggiungere una di quelle immagini alfanumeriche un po'
sgranata o difficile da leggere, come controllo aggiuntivo. Così solo
una persona può tentare il login e non un'automa.
IMHO :)
Ovvio che se è una cosa importante allora i controlli di sicurezza
aumentano.
Per esempio facendo in modo che il form non invii la password in chiaro
ma ad esempio un md5 della stessa (aiutandoti con JS per esempio, ma
qui è OT)...

 qui è OT)...
bhe certo il js e' l'unico che puo' risalire direttament al giusto ip
del client

 un linkino?
CAPTCHA (ma alcuni OCR sono in grado di interpretare correttamente il 
testo dell'immagine...quindi non è un metodo affidabile al 100%).
rob4you

rob4you ha scritto:

mmmhh..  nah impossibile, credo che se lo setti che i numeri vengono
scritti storti dietro ad immagini distorte la possibilita' di un ocr e'
nulla

 nulla
http://sam.zoy.org/pwntcha/
Se lo confondi troppo, nemmeno gli umani riescono a leggerlo.
Ma ci sono altri sistemi in studio, sempre visuali, tipo il captcha "ci
sono tre fi**e tra queste nove foto di donna: selezionale" che nessun
computer per ora riesce a decodificare. :)
Bye.

Alessandro Pellizzari ha scritto:

:D tipo Cwazymail, hemmm... non male.. nel senso prendi un centinaio di
immagini e metti in ognuna un keyword che va bene per un criterio. Poi
mettiamo che chiedi "seleziona" la macchina fra queste, ne non riesce
cambi con seleziona il piu' veloce, via via cosi... solo che e' un
lavoraccio e ha finite possibilita'.....

Alessandro Pellizzari ha scritto:



 del client
...Intendevo dire che con JS lato client puoi calcolare l'md5 della
password e inviare quello invece della pwd in chiaro...

Darkbyte [Work] ha scritto:

allora checcentra? si puo' fare anche con il php. Non e' una
pecuniarita' del js

 pecuniarita' del js
:-) a volte mi sbalordisci! :-)
se devo inviare dei dati dal client al server....di certo non li invio 
con php!!!!!!!!!!!!!!! Mannaggia a tee! :-D
ps: pecuniarità?????? LOL
rob4you

 if (($user=="userok") && ($pass=="passok")) {
Non è "così" sicuro, in quanto le password sono in chiaro.
Potresti aumentare la sicurezza usando cifrature one-way e memorizzando 
le pwd cifrate...
Tieni presente che in caso di distribuzione del software, qualcuno 
potrebbe configurare male apache e quindi rendere leggibile la tua pagina.
O meglio ancora, qualcuno potrebbe leggere la pwd lato server (che tante 
volte equivale a dire lato client per sistemi in development o in fase 
test..)
Ciao!
Sir Galahad

 pecuniarita' del js
... O_O
Guarda nemmeno ti rispondo :D :D :D

rob4you ha scritto:

OOoopppss, mi sa che a sto giro ho detto una baldraccata...  in effetti
nn ci avevo mai pensato ed e' vero che il js e' l'unico che fa la
criptatura client....  doh! sto leggendo troppi forum assieme, sorry -_-

 criptatura client....  
Beh.....non in assoluto.....diciamo che è il più 
comune/facile/immediato.
Se vuoi criptare lato client, esistono di sicuro altri modi per farlo 
(più o meno noti....java, flash, vbscript, jscript [arrgh!]). ;-)
rob4you