Защита на GET - какво още може да се добави

mitko666

Registered
Здравейте на всички.
Код:
$profile = $_GET['pr'];
$checking_profile = mysql_query("SELECT username FROM `users` WHERE `username`='$profile'")or die(mysql_error());
$checking  = mysql_num_rows($checking_profile); 
if (strlen(trim($profile)) < 3 or strlen(trim($profile)) > 14 or preg_match("/[^-a-z0-9_.-]/i", $profile)) {
  echo 'Невалидно потребителско име';
}
elseif ($checking == 0) {
  echo 'Няма такъв потребител';
}
else {
//Всичко останало
}
Това е кода който използвам за проверка на една GET променлива,но какво още може да се добави или промени за да стане кодът по сигорен?
 
ами не знам защо така правиш ,но за такива проверки се ползва post. Тук можеш да направиш addslashes() , може да имма грешка в синтаксита, да изчистиш htmlspecilachars , да кастнеш да е стринг, друго не се сещам
 
Код:
strlen(trim($profile)) < 3 or strlen(trim($profile)) > 14 or preg_match("/[^-a-z0-9_.-]/i", $profile)
Това го слагам защото проверката при регистрация на потребителя ми е същата съответно ако се въведът други символи да съм сигрен че няма как да има такъв потребител, а и така спирам някои символи които са нужни за атака.Но все пак не съм сигорен дали използвам правилният метод за това питам какво още трябва да се добави или какво да премахна от кода.
 
shterev каза:
ами не знам защо така правиш ,но за такива проверки се ползва post. Тук можеш да направиш addslashes() , може да имма грешка в синтаксита, да изчистиш htmlspecilachars , да кастнеш да е стринг, друго не се сещам
Как ще се използва POST, като той взима информация от GET, да речем за потребителски профил?

По темата:
Виж сега, mitko :D Ето това което си направил
if ($checking == 0) {
echo 'Няма такъв потребител';
}
е напълно достатъчно понеже той каквото и да напише в GET, ако напише да речем <asdasdjsfdhgd;'';>< и нищо няма да направи, ще му изпише там грешката..
 
http://bg2.php.net/manual/en/function.addslashes.php
http://bg2.php.net/manual/en/function.htmlspecialchars.php
:?:
Но има и по-добри момчета изчакай да видиш, какво ще ти кажат и те
 
Но като цяло htmlspacialchars() + addslashes() ти е напълно достатъчно, в комплект с подходящите IF проверки дали съществува или не потребителското име.
А иначе ако те гони параноята, може и някой прег_матч да сложиш, но според мен е излишно.
 
Karcho каза:
shterev каза:
ами не знам защо така правиш ,но за такива проверки се ползва post. Тук можеш да направиш addslashes() , може да имма грешка в синтаксита, да изчистиш htmlspecilachars , да кастнеш да е стринг, друго не се сещам
Как ще се използва POST, като той взима информация от GET, да речем за потребителски профил?

По темата:
Виж сега, mitko :D Ето това което си направил
if ($checking == 0) {
echo 'Няма такъв потребител';
}
е напълно достатъчно понеже той каквото и да напише в GET, ако напише да речем <asdasdjsfdhgd;'';>< и нищо няма да направи, ще му изпише там грешката..
А ти на формите за логин $_get ли ползваш? :shock: Казах,че е по-добре с пост
 
Ами, за формите, естествено, че пост. Аз си помислих, че това е нещо като да речем преглед на профил.
 
Митко ти изобщо не валидираш GET метода, а го използваш суров!!!
Няма значение кой метод ще използваш (POST или GET) . При GET данните които се пдоават към вървъра са видими в url. Този регилярен израс е няквак боза. Валидно име може да съдържа букви, цифри, долно тире, точка и тире. Това валидира израза. Това за по сифурен код няма да ти помогне.
може само да доабвиш слашове с фунцията addslashes() но трябва да провериш първо дали сървъра т иизползва магически кавички ако изполва не добавяй addslashes() понеже ще се получи рекурсивно умножение на слашовете. ако ги слашваш при лейаута трябва да г истрипваш.
Фунцията htmlspacialchars() се използва при видоализация само когато данните да готови за подване към клиента. Когато ги подаваш към базата не е необходимо !!! Защото ако си ги ексйпнал един път към базата и втори път към клиента се получва двойно ейспване.

привш си тази фунциики:
Код:
function _add($var) {
return get_magic_quotes_gpc() ? $var: _add_to_array($var);
}

function _str($var) {
	return get_magic_quotes_gpc() ? $var: _str_from_array($var);
}

function _add_to_array($a) {
	if (!is_array($a)) addslashes($a);
	foreach($a as $key => $val) $a[$key] = _add_to_array($val);
	return ($a);
}


function _str_from_array($a) {
	if (!is_array($a)) stripslashes($a);
	foreach($a as $key => $val) $a[$key] = _str_from_array($val);
	return ($a);
}
 
Щерев кодът ще се ползва за преглеждане на профил иначе благодаря на bgspace ще почета още малко и ще видя какво ще спретна :)
 

Back
Горе