Хакнат сайт как да се защитя ?

popeto

Registered
На сайта е направена функция, с помощта на която админ панелът е защитен. (Пренасочване на потребителя, ако правата са по-малко от изискваното).
Тази функция е заобиколена по някакъв начин. Кажете ми решенията.
Код:
function rights($rights){
global $http;
global $user;
if($user['rights'] < $rights) {
header('Location: '.$http.$_SERVER['SERVER_NAME']); exit;
}}

Код:
$user_id = isset($_COOKIE['uid']) ? fl($_COOKIE['uid']) : '';
$password = isset($_COOKIE['password']) ? fl($_COOKIE['password']) : '';

if($user_id && $password) {
$user = $base -> query('SELECT * FROM `users` WHERE `id` = "'.$user_id.'" AND `password` = "'.$password.'"') -> fetch_assoc();
} else {$user = false;}
 
popeto каза:
На сайта е направена функция, с помощта на която админ панелът е защитен. (Пренасочване на потребителя, ако правата са по-малко от изискваното).
Тази функция е заобиколена по някакъв начин. Кажете ми решенията.
Код:
function rights($rights){
global $http;
global $user;
if($user['rights'] < $rights) {
header('Location: '.$http.$_SERVER['SERVER_NAME']); exit;
}}

Код:
$user_id = isset($_COOKIE['uid']) ? fl($_COOKIE['uid']) : '';
$password = isset($_COOKIE['password']) ? fl($_COOKIE['password']) : '';

if($user_id && $password) {
$user = $base -> query('SELECT * FROM `users` WHERE `id` = "'.$user_id.'" AND `password` = "'.$password.'"') -> fetch_assoc();
} else {$user = false;}

За съд си. Не те ли е срам да си държиш паролите в бисквитка. Най-добре спирай сайта, че ако някой забележи ще те съди и то здраво.
 
@Revelation, те повечето "програмисти" използват този метод с цел "опция "запомни ме"" за да не се вписват всеки път.(на теб ти е ясно за тези практики)

Popeto, какви данни запазваш в $right? Как става вписването на потребителя т.е. какэв формуляр ползваш? right ползваш ли го в бисквитките? Как филтрираш данните?
 
Може и да има инжекциика
Код:
'SELECT * FROM `users` WHERE `id` = "'.$user_id.'"

Код:
if ($user['rights'] < $rights)
Как трябва да работи това, ако $ user = false?
Най-вероятно поради грешка това условие просто се приема като невярно и чекът ви минава.
 
Аз ако разбирах нещата щях сам да го направя.
Явно ще трябва да си платя да ми го направят.
 
как кълват шараните. това е админа.
Вече 2 тема пуска за да "раздвижи" форума и като гледам му се получава :D :D :D
 
popeto каза:
На сайта е направена функция, с помощта на която админ панелът е защитен. (Пренасочване на потребителя, ако правата са по-малко от изискваното).
Тази функция е заобиколена по някакъв начин. Кажете ми решенията.
Код:
function rights($rights){
global $http;
global $user;
if($user['rights'] < $rights) {
header('Location: '.$http.$_SERVER['SERVER_NAME']); exit;
}}

Код:
$user_id = isset($_COOKIE['uid']) ? fl($_COOKIE['uid']) : '';
$password = isset($_COOKIE['password']) ? fl($_COOKIE['password']) : '';

if($user_id && $password) {
$user = $base -> query('SELECT * FROM `users` WHERE `id` = "'.$user_id.'" AND `password` = "'.$password.'"') -> fetch_assoc();
} else {$user = false;}

Този код е нормално да бъде "разбит" и да се получат допълнителни права от някой, който ги няма. Колегите ти споменаха вече за инжекцията или през бисквитките или, или ... Та решението е пренаписване на проверките ти за аутентикация на потребителите. Ако не си чувал за SQLi, прочети веднага за този вид атака. Дай повечко код и може да се пробваме да ти сглобим нещо.
 

Горе