Questionario in PHP...si possono leggere le risposte?

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
ciao a tutti...
sto preparando un questionario
c'è qualke modo per leggere le risposte?

Guardando il sorgente si vedono solo i tag in HTML
per esempio anche un semplice login e password che viene fatto in php
può essere scoperto? Se si come avviene e come impedirlo!

Ho sentito parlare di criptare le password... che significa? E come si fa?
Un piccolo esempio si può avere?

Grazie onorevoli... voi che avete studiato! :book:
questionario
au revoir
by max
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Il codice PHP viene eseguito sul server e il risultato viene poi inviato come output al browser, quindi, a meno che un malintenzionato non riesca ad accedere alla macchina su cui sono ospitati i file (ad esempio tramite una falla nel server FTP) non c'è modo per accedere ai sorgenti dell'applicativo.

Criptare la password è una buona abitudine, di solito si usa l'algoritmo MD5 o SHA1 (meglio l'ultimo). La sicurezza è data dal fatto che gli algoritmi sono one-way: partendo dalla password puoi ottenere la stringa criptata, ma non puoi eseguire l'operazione inversa (o meglio, si potrebbe fare, ma la potenza di calcolo richiesta è enorme).

Dai un'occhiata a questo tutorial: http://www.webspazio.it/tutorial_php/crypt_md5_sha1_criptare_decriptare_stringhe_in_php.php. L'unica differenza, in questo caso, è che tu devi confrontare la stringa criptata con quella presente nel database, ma per il resto il sistema è quello.
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
interessante ...

ho visto l'esempio del database

ma in genere quando si parla di database si parla anche di tabella--->campo-password--->INSER INTO---->e SELECT (per estrarre)...

lo script è un po incompleto... :book:

ma come mai per decriptare ci vuolta tanto?
se uno sceglie una password piccola magari soto testo breve 4 o 5 parole
criptando e decriptando ci vuole molto?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
cioa
non puoi deciptarla (salvo script+pc mostruoso)
quando attribuisci una password prima di salvarla nel db (o come stringa in un txt) la crippti
salva md5(password_in_chiaro)
poi quando l'utente deve fare il log

<?php
//dal form di log invia la password
$pass=md5($_POST['password']);//qui la cripti prima del confronto
//la estrai dal db e sarà qualcosa del tipo 1f3870be274f6c49b3e31a0c6728957f
//$pass_etratta_es="1f3870be274f6c49b3e31a0c6728957f";
if($pass==$pass_etratta_es){
//log OK
}else{
//log KO
}
?>
il tutto serve in modo che se un malintenzionato riesce ad accedere al tuo db o al txt (molto più facile), non capisce quali sono le password
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
bene bene... teoricamente l'ho capito

ora bisogna vedere in pratica...

Ho fatto una prova veloce...

Ho scelto una parola e attraverso md5($_POST['password'])
ho ottenuto la sequenza hghghg4tg845hg (quella che è)

adesso la memorizzo su un database creo la tabella e un solo campo password

Poi una select che estrae hghghg4tg845hg
e la confronta con la parola che ho scritto nel form HTML.

Ora vediamo...

il concetto è giusto?
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Vediamo vediamo...

1) Prima cosa ho creato una tabella "xxxxx" nel database con un solo campo "password" di dimensione 30.
(Il database mi sembra più sicuro rispetto un txt che è più accessibile)

2) Poi .. per ottenere la password criptata di una determinata parola ho usato
questo script

PHP:
<?php
if(isset($_POST['pulsante'])){
$pass=md5($_POST['password']); //qui la cripti prima del confronto
echo "password criptata prima del confronto: $pass <br>";
}
?>

<form action="#" method="POST">
pass: <input type="password" name="password">
<input name="pulsante" type="submit" value="invia">
</form>

link esempio

cosi facendo... ottengo la relativa sequenza... la stringa...
essa è molto più lunga e formata da caratteri alfanumerici :mavieni:

3) Essendo la tabella vuota non potevo scrivere il valore del campo "password"
quindi ho creato una pagina php con "insert into" (provvisoria) per inserire la stringa alfanumerica ottenuta precedentemente (la password criptata).
Ecco lo script
PHP:
<?php
//pagina provvisoria per l'invio della password criptata

//$password=htmlspecialchars($_POST['password']);
$password="72b302bf297a228a75730123efef7c41";
echo "$password";

//dati per la connessione al database
$db_host="localhost";
$db_user="";
$db_password="";
$db_nome="nome_del_mio_database";

//connessione al database
$db=mysql_connect($db_host,$db_user,$db_password);
$db_forum=mysql_select_db($db_nome,$db);

//query di inserimento
$query="INSERT INTO `nome_tabella` (password) VALUES('$password')";

//esecuzione della query

$query_result=mysql_query($query) or die("&error=1");
echo "&stop=1";

?>

4) dopo essermi assicurato che la password criptata sia stata ricevuto dal database (con "aggiorna" tabella) ... proseguo...

5) Adesso mi serve il SELECT e qui ho avuto qualke difficoltà... perchè quelle che avevo non andavano bene quella che mi serviva estrarre una riga e non una colonna memorizzarla in una variabile e confrontarla
ecco lo script
pagina_ricevente.php
PHP:
<?php

//dal form di log invia la password
$pass=md5($_POST['password']); //qui la cripti prima del confronto
echo "password criptata prima del confronto: $pass <br>";

//la estrai dal db e sarà qualcosa del tipo 1f3870be274f6c49b3e31a0c6728957f

// dati per la connessione al database

$db_host = "localhost";
$db_user = ""; 
$db_password = "";
$db_name = "nome_del_mio_database";

// connessione al database

$db = mysql_connect ($db_host, $db_user, $db_password);
$db_forum = mysql_select_db ($db_name, $db);

$sql = "SELECT password FROM nome_tabella";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {

$pass_etratta_es=$row['password'];
echo "password presa dal database: $pass_etratta_es";

}

if($pass==$pass_etratta_es){
echo " - verifica: OK";
}else{
echo " - verifica: KO";
}
?>

6) infine la cosa più stupida..il form html ... ve l'ho lasciato come dessert
esso si collega alla pagina_ricevente.php

Codice:
<form action="pagina_ricevente.php" method="POST">
pass: <input type="password" name="password">
<input type="submit" value="invia">
</form>


io ho provato è funziona! - VERIFICA OK :mavieni:

lascio a voi eventuali correzioni :elvis:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
potresti fare forse più semplicemente
PHP:
<?php
//verifica password
//dal form di log invia la password 
$pass=md5($_POST['password']); //qui la cripti prima del confronto 
if($pass!=""){//se pass non è vuota
	//dati di connessione
	$sql = "SELECT password FROM nome_tabella WHERE password='$pass'";
	$result = mysql_query($sql);
	if(mysql_num_rows($result) > 0{
		echo " - verifica: OK";
	}else{
		echo " - verifica: KO";
	}
}else{
	echo " - non hai inserito la password";
}
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Ma sei sicuro che funzioni correttamente? Perché, se mi ricordo bene, un hash MD5 è lungo 32 caratteri, quindi se il campo del database è da 30 il controllo di equivalenza non dovrebbe andare a buon fine.

In ogni caso ti consiglio, ripeto, di usare SHA1 invece di MD5.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Nelle applicazioni più avanzate viene anche adottato il salt della password. Si tratta di una stringa lunga, solitamente, una decina di caratteri, che viene aggiunta in coda alla password quando viene codificata (sia quando si inserisce l'utente nel database che quando effettua il login). In questo modo, anche se un malintenzionato entrasse in possesso della tabella degli utenti, non potrebbe comunque decriptarle con un dizionario, perché non sarebbe in possesso del salt (che io, solitamente, conservo in un file PHP sotto forma di costante).
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao alex
Ciao
Visto che si sta parlando di criptatura
Prova a leggere
http://forum.mrwebmaster.it/php/1819-lista-funzioni-3.html #23
se crippti una password con md5 o sha1 poi la tratti con una funzione simile in cui la chiave è privata (e quindi non nel db) penso che divenga abbastanza difficile decrittarla.
es.
$pass=sah1($pass);
$pas=codifica($pass, 37589);//37589 è la chiave privata
p.s.
la funzione è un po’ vecchiotta (usavo ancora ereg e dovevo dare una chiave lunga quanto la password) ora ho corretto e la chiave può essere lunga quanto si vuole (da a)
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
manca qualkosa...

ciao
potresti fare forse più semplicemente
PHP:
<?php
//verifica password
//dal form di log invia la password 
$pass=md5($_POST['password']); //qui la cripti prima del confronto 
if($pass!=""){//se pass non è vuota
	//dati di connessione
	$sql = "SELECT password FROM nome_tabella WHERE password='$pass'";
	$result = mysql_query($sql);
	if(mysql_num_rows($result) > 0{
		echo " - verifica: OK";
	}else{
		echo " - verifica: KO";
	}
}else{
	echo " - non hai inserito la password";
}
?>

if(mysql_num_rows($result) > 0{
mancano...
la parentesi tonda di chiusura e la variabile per confrontare
la password criptata dal database con quella inserita nel form.

PS @gighen:hai ragione... ho messo 40 mi ricordavo male perchè all'inizio avevo messo 25 caratteri ed infatti trocava la parte finale della stringa.
Il salt della password?
Si tratta di una stringa lunga, solitamente, una decina di caratteri, che viene aggiunta in coda alla password quando viene codificata (quando l'utente effettua il login).
Per capirlo meglio avrei bisogno un esempio.
Grazie.

Poi
$pass=sah1($pass);
$pas=codifica($pass, 37589);//37589 è la chiave privata

sah1 ---->sha1
(io ste cose non le conosco cerchiamo di scriverle giuste.
Che vuol dire la parola codifica?


Aggiornamento...
codifica è il nome della funzione di quell'esempio (un po lunghetto) di criptare e decriptare se non ho capita male il proprietario ha una sua chiave primaria oltre la password?
Intanto ho provato quello script lunghetto e ho stampato poi vedrò di capirci qualkosa
nel frattempo se mi dai qualke informazioni in più e se c'è un modo per semplificare il processo di criptazione e decriptazione magari senza chiave ... non so.

Iniziamo dalle cose semplici
 
Ultima modifica:

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
aggiornamento...

facendo delle ricerche su google c'è scritto che il sistema di criptazione md5()
on si può decriptare però ho trovato questo
http://www.upnews.it/outframe/decriptare-e-criptare-una-password-md5--tr3ndy-com

quindi esiste il modo per decriptare una password?
nell'esempio parla sia di md5 che di sha1

e poi questo... per proteggere il codice php trasformandolo in binario (linguaggio macchina)
http://www.upnews.it/outframe/offuscare-o-proteggere-il-nostro-codice-php--introduzione
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Esistono dei dizionari che contengono migliaia di parole usate comunemente e il loro rispettivo hash MD5. In questo modo, se inserisci l'hash, riescono a trovare la parola a cui corrisponde. Tuttavia se come password usi delle parole di senso non compiuto il problema non si pone. Inoltre, adottando la tecnica del salt delle password, anche se inserisci una parola comune nessun software riuscirà mai a decriptarla tramite un dizionario.

Per quanto riguarda l'utilizzo di software per offuscare il codice PHP, sono utili solamente se vuoi vendere i tuoi script, oppure distribuirli al pubblico senza che nessuno possa modificarli. È tra l'altro una pratica che io condanno fortemente, perché contraria ai principi dell'Open Source. Se vuoi sviluppare un software senza che nessuno ne possa leggere il sorgente PHP, essendo un linguaggio interpretato, è poco indicato. Studia C, oppure C++.
 
Ultima modifica:

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
ok...

ho l'impressione che la tecnica del salt delle password sia la cosa più sicura

Magari quando hai tempo mi fai un esempio...

Ci vediamo più tardi

------aggiornamento-----18:49---
ho trovato questo molto interessante è in javascript ma funziona solo in rete
http://javascript.html.it/demo/javascript/605/esempio.htm

per decriptare richiede la chiave... mi sembra ottimo!
in un login oltra a criptare la password e metterla in un database
aggiungere anche una chiave che non sia memorizzata da nessuna parte
e venga aggiunta all'indirizzo di destinazione...

-------aggiornamento 19:09----------------------
classifica gioco da proteggere

e il questionario è
qui
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
per caso avete letto "crypto"? (o l'articolo in home?)

p.s. @max
la parentesi tonda di chiusura e la variabile per confrontare
la parentisi ok, ma la variabile da confrontare la trovi nella query WHERE pass='$pass'
se esiste msql_num_rows restituisce un numero > 0 (1 se ce nè una sola) altrimenti 0
 
Discussioni simili
Autore Titolo Forum Risposte Data
K Questionario con risposte php PHP 3
V Ricerca volontari questionario tesi - Ricambio Offerte e Richieste di Lavoro e/o Collaborazione 0
P Sondaggio automobili - Aiuto questionario tesi Discussioni Varie 2
A Aiuto tesi di laurea - Questionario smartphone Discussioni Varie 1
A struttura database per questionario Database 1
felino Plugin per questionario WordPress 5
P Questionario Groupon per tesi di laurea Discussioni Varie 1
E Richiesta compilazione questionario per tesi! Offerte e Richieste di Lavoro e/o Collaborazione 0
JellyBelly Strutturare un database di tipo questionario - gestione della validazione PHP 5
M questionario help PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0

Discussioni simili