Pagina 1 din 1

cred ca este o problema de securitate

Scris: 27-Noi-2007, 00:18:43
de alin"

Cod: Selectaţi tot

if (strstr($username, '"') || strstr($username, '"') || strstr($username, chr(160)))
	{
		return array('error' => true, 'error_msg' => $lang['Username_invalid']);
	}

	return array('error' => false, 'error_msg' => '');
Acest cod aflat in folderul includes, trebuie sa verifice daca in variabila $username avem ghilimele adica " sau &qout; .Si totusi pot se poate inregistra un user de forma userului meu.Este problema de securitate, sau aceasta verificare face defapt altceva si eu nu imi dau seama.

Multumesc Anticipat

Scris: 27-Noi-2007, 14:44:25
de shocker
Ce ai tu acolo e parte din functia validate_username() din functions_validate.php
E o mica scapare acolo, nu are cum sa gaseasca " sau " deoarece in usercp_register.php atribuie valoarea lui $username cu:

Cod: Selectaţi tot

phpbb_clean_username($HTTP_POST_VARS['username'])
Cum in functia phpbb_clean_username e un htmlspecialchars(), $username din alin\" v-a deveni alin\". Daca s-ar trece valoarea asta prin filtrul mentionat de tine mai sus ar da eroare ca numele contine "

Deci apelul la validarea numelui e de forma:

Cod: Selectaţi tot

validate_username("alin\"")
Cum ziceam, pana aici ar detecta ca contine caractere ilegale. Insa, la inceputul functiei validate_username se refiltreaza userul:

Cod: Selectaţi tot

$username = phpbb_clean_username($username);
Astfel valoarea alin\" se va transforma in alin\" (a inlocuit caracterul special & cu &, astfel verificarea numelui daca contine ghilimele e complet fuxed up :lol: