Аутентификация!`

Viktror

Новичок
Аутентификация!`

Уважаемые форумчане посмотрите скрипт насколко защещен вход в систему используя его!
PHP:
<?php
session_start();
require_once("db_fns.php");
require_once("design_forms_fns.php");

$get_login=preg_replace("/[^a-z0-9]/i", "", $_POST["login"]);//обрезаем все чтобы нельзя было сделать mySQL инъекцию
$get_passwd=preg_replace("/[^a-z0-9]/i", "", $_POST["passwd"]);
if($get_login&&$get_passwd)
{
	if(!db_connect()){
		login_form("Sorry we experienced technical problems try to enter in are few min later!");
	exit;
	}
	$query="select * from users where login='$get_login'";
		$results=mysql_query($query);
		if ($results){
			list($id_user,$m_login, $m_passwd, $first_name, $second_name)=mysql_fetch_row($results);
			if($get_passwd!=$m_passwd 
				or $get_login!=$m_login){
				login_form("Sorry but there is no such a user with this name and password!");
				exit;	
				}
			$_SESSION['valid_user']=$first_name." ".$second_name;
		//display_index_page($header_1,$main_menu,$footer);	
		echo "you loged like". $_SESSION['valid_user'];
			}
		else{
		login_form("Sorry but there is no such a user with this name and password!");
		exit;
		}		
}
if(!empty($get_login)){
 login_form("Could not log you in!"); 
 exit;
		}	

echo "hi";			
login_form("");
exit;
	
?>
поделитесь своим опытом!
Спасибо!
 

iamFake

Mind Of Liberty
на регистрацию такая же обработка логина и пароля стоит? если да, то зарегистрировавшись (допустим я поставил в логине апостров) я больше не смогу войти... на кой прегматч там? чем тебе htmlspecialchars неугодила? я у себя прогоняю логин через

htmlspecialchars($pwd, ENT_QUOTES, 'cp1251');

а пароль без обработки сразу в мд5...

потом, зачем из базы все вытаскивать и сравнивать? можно же так

SELECT `id` FROM `users` WHERE `login` = '{$login}' AND `password` = '{$pwd}'

если запрос вернул строку, то все верно и авторизация пройдена... если же ответ пустой - то либо логин либо пасс не подходят...
 

SiMM

Новичок
> на кой прегматч там? чем тебе htmlspecialchars неугодила? я у себя прогоняю логин через
А зачем? Грамотно составлять MySQL-запросы - не пробовали?
http://phpfaq.ru/slashes#mysql
 

begemot

Новичок
А PEAR::Auth не пробовали? Все время удивляют такие люди кодящие снова и снова то что давно закодено.
 

Фанат

oncle terrible
Команда форума
С чего ты взял, что он кодил тут хоть строчку?

А вот удивление свое оставь при себе.
Если ты не в состоянии сам написать программу, то это не значит, что другие тоже такие же беспомощные.
 

iamFake

Mind Of Liberty
Автор оригинала: SiMM
> на кой прегматч там? чем тебе htmlspecialchars неугодила? я у себя прогоняю логин через
А зачем? Грамотно составлять MySQL-запросы - не пробовали?
http://phpfaq.ru/slashes#mysql
спасибо, но с ентим я знаком... я предпочитаю держать все спец символы логина в хтмл сущностях...
 

Фанат

oncle terrible
Команда форума
предпочитай на здоровье хоть в хекс-кодах держать.
А вот советовать другим эти глупости не стоит
 

iamFake

Mind Of Liberty
Автор оригинала: Фанат
предпочитай на здоровье хоть в хекс-кодах держать.
А вот советовать другим эти глупости не стоит
просто экранировать слеши во избежании "кривого" sql? а как же xss?
 

Фанат

oncle terrible
Команда форума
XSS касается вывода данных, а не их хранения.
что ты называешь "кривым SQL"?
 

iamFake

Mind Of Liberty
Автор оригинала: Фанат
XSS касается вывода данных, а не их хранения.
что ты называешь "кривым SQL"?
обычно после того как юзер авторизировался, выводится чтонить типа "Здраствуйте Юзер", xss я упомянул из расчета какраз на такую ситуацию... вот собсно мое предпочтение хранить в хтмл сущностях направлено на решение данной заурядици...

под "кривым sql" я подразумеваю не экранированые спец символы в запросе, т.е. WHERE `name` = 'Alex'ander'
 

Фанат

oncle terrible
Команда форума
А если ты письмо будешь писать юзеру?
Здравствуйте, алекс&amp;#39;андр?

Прочему бы не применять сущности там, где они нужны?
 

iamFake

Mind Of Liberty
Автор оригинала: Фанат
А если ты письмо будешь писать юзеру?
Здравствуйте, алекс&amp;#39;андр?

Прочему бы не применять сущности там, где они нужны?
исходя из своего опыта, письмо отправляется много реже чем вывод приветствия юзеру, посему либо делать обратное преобразование либо, как я делаю, генерировать письмо в виде хтмл (там же и линки удобней)
 

Black Raven

Новичок
iamFake
Неужели так тяжело признать, что не прав?..

[imho]
Информацию хранить надо в том виде, в котором она поступает.
Преобразовывать надо при выводе, если есть необходимость.
[/imho]


потом, зачем из базы все вытаскивать и сравнивать? можно же так

SELECT `id` FROM `users` WHERE `login` = '{$login}' AND `password` = '{$pwd}'
select count(*) from ...

и не надо проверять вернул мускл ряды или нет, ведь если без проверки и @ делать fetch_row, то warning...
а так вполне кошерно - 0 || 1 (ну по логике)
 

iamFake

Mind Of Liberty
Автор оригинала: Black Raven
iamFake
Неужели так тяжело признать, что не прав?..

[imho]
Информацию хранить надо в том виде, в котором она поступает.
Преобразовывать надо при выводе, если есть необходимость.
[/imho]
прав\неправ кто решает? Каждый говорит так как он видит решение данной проблемы... Мне удобней и быстрей один раз преобразовать и хранить заранее безопасную информацию (при том что письмо в виде хтмл отправляю - я обратных преобразований не делаю).

И в своем способе "хранения" информации я невижу ничего "ламерского" или нелепого...

Автор оригинала: Black Raven
select count(*) from ...

и не надо проверять вернул мускл ряды или нет, ведь если без проверки и @ делать fetch_row, то warning...
а так вполне кошерно - 0 || 1 (ну по логике)
селект я выполняю без count чтобы при верной авторизации также вытащить нужные сведения в сессию о юзере, а не просто проверить факт авторизации
 

Фанат

oncle terrible
Команда форума
закончили дискуссию.
iamFake, сократи подпись до одной строки
 

Viktror

Новичок
Автор оригинала: Денч
PHP:
or $get_login!=$m_login)
интересно, а это для чего...
PHP:
if($get_passwd!=$m_passwd// - это усли пароль не верен
                or $get_login!=$m_login) //это если была произведена mySQL - инекция
-~{}~ 04.04.07 00:00:

Автор оригинала: Фанат
Viktror
а почему такой вопрос возник?
Я слыхал про mySQL-injection да и так ломают же все, вот хотелось бы написать насколько можно более защищенный скрипт, входа в систему!
 
Сверху