addslashes или mysql_real_escape_string

kikity_94

Registered
Здравейте имам може би малко странен въпрос.
Тези 2 функции добре ли е да се ползват заедно или само едната и коя е по добър вариянт и защо.

1.addslashes
2.mysql_real_escape_string
 
Най-добре използвай двете заедно. 2-рата фунцкия служи за избягване на XSS и SQLi атака, а 1-вата слага наклонени черти пред кавичките, за да не ти избие грешка заявката.
 
Аз и 2те заедно ги ползвам ама реших да попитам дали е добра практика.
 
Някой отвори ли php.net да види какво правят? И двете правят едно и също - слагат черти пред кавичките. Можеш да ги пуснеш и 10 пъти, но само ще си вкараш една камара черти дето не ти трябват
 
HerpaMoTeH каза:
Най-добре използвай двете заедно. 2-рата фунцкия служи за избягване на XSS и SQLi атака, а 1-вата слага наклонени черти пред кавичките, за да не ти избие грешка заявката.


И как аджеба, mysql_real_escape_string() предпазва от XSS ? Малко си далеч от истината.
Има документация. Преди да ползвате разни функции, то прочетете какво правят, преди да ръсите бисери и да бъркате хората.

Ако става въпрос за база данни, то по-добре ползвай PDO.
 
Мен ако ме питаш addslashes e добър филтър, но пък до колкото съм цапознат mysql_real_escape_string филтрира малко повече неща но пък минус му е че не филтрира % с \% ! Може и да те излъжа, че филтрира повече неща от addslashes :)
 
dakata__92 каза:
Мен ако ме питаш addslashes e добър филтър, но пък до колкото съм цапознат mysql_real_escape_string филтрира малко повече неща но пък минус му е че не филтрира % с \% ! Може и да те излъжа, че филтрира повече неща от addslashes :)


Ама разберете се със себе си. mysql_real_escape_string се използва само от mysql. Филтрира си нужните неща. Но това, че е минато през него, не е гаранция.
 
TryMe каза:
dakata__92 каза:
Мен ако ме питаш addslashes e добър филтър, но пък до колкото съм цапознат mysql_real_escape_string филтрира малко повече неща но пък минус му е че не филтрира % с \% ! Може и да те излъжа, че филтрира повече неща от addslashes :)


Ама разберете се със себе си. mysql_real_escape_string се използва само от mysql. Филтрира си нужните неща. Но това, че е минато през него, не е гаранция.
Аз си ползвам addslashes и пак няма гаранция въпрос на стил на писане, нооо до сега да чукна на дърво си работи перфектно :) Ако има слабости казвайте, за да знаем от какво да се защитим като избягване на символи или някакви променени версиии на текста филтрирани примерно с md5() (лош пример) но за такъв текст като хеш говоря !
 
Еми пак няма гаранция, защото функциите правят едно и също нещо. Просто addslashes се ползва глобално, докато mysql_real_блябля... се ползва само от mysql.
 
TryMe каза:
Еми пак няма гаранция, защото функциите правят едно и също нещо. Просто addslashes се ползва глобално, докато mysql_real_блябля... се ползва само от mysql.
Скоро ще вида да пробвам ето тази функция с един регулярен израз да я преправя, така че когато в линка на страницата в браузера се подаде неправилен символ директно да дава ерор страничка и да записва атака :

PHP:
function curPageURL() 
{
	$pageURL = 'http';
	if (isSet($_SERVER["HTTPS"]) == "on") 
	{
		$pageURL .= "s";
	}
	$pageURL .= "://";
	if (isSet($_SERVER["SERVER_PORT"]) != "80") 
	{
		$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
	} 
	else 
	{
		$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	}
	return $pageURL;
}
$pageURL= curPageURL();
if(preg_match( ...))
{
ok
}
else
{
eror page 
}
 

Back
Горе