Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Безопасное программирование на PHP (отзыв)

Сообщения:  [1-10]    [11-20]  [21-28] 

 
 автор: XPraptor   (03.02.2005 в 16:07)   письмо автору
 
   для: 1dt.w0lf   (02.02.2005 в 16:25)
 

На счет скорости ты зря! Шифр 24 букв абсолютно не занимает время.
Все данные шифровать не надо, я показал пример что нельзя сделать SQL инъекцию при таком методе проверке логина и пароля. И в других местах приема данных тоже надо сначала присвоить их переменным, потом если надо отфильтровать, а только потом подставлять в запрос.

   
 
 автор: 1dt.w0lf   (02.02.2005 в 16:25)   письмо автору
 
   для: XPraptor   (02.02.2005 в 12:48)
 

1. Скорость... все упирается в скорость работы. Твоя функция md5() будет заметно тормозить особенно при большом количестве юзеров.
2. А пароль то в базу записывается? Получается что его проверять все равно придется перед помещением в запрос при регистрации.
3. Одной авторизацией дело не ограничивается. Или ты все данные в базе шифровать собрался?

   
 
 автор: XPraptor   (02.02.2005 в 12:48)   письмо автору
 
   для: Artem S.   (02.02.2005 в 07:09)
 

Я вот только не пойму зачем такое извращение? Зачем пытаться защититься от того, чего вообще не нужно допускать?
Я всегда при проверке пишу такой код:

$login=$_POST["snd_login"];
$pass=$_POST["snd_pass"];
$snd_hash=MD5($login . $pass);
$rez=mysql_query("SELECT usr_hash FROM Users WHERE usr_hash='" . $snd_hash . "');


И все. А при регистрации в базу пишу только пароль и хэш логин пароль. Можно и пароль не писать. но я всегда делаю сервис отправки забытого пароля, поэтому еще пароль храню, а логин вообще никуда не пишу, только хэш связки логин-пароль.

   
 
 автор: Artem S.   (02.02.2005 в 07:09)   письмо автору
 
   для: antf   (31.01.2005 в 16:58)
 

Не нужно все внимание обострять лишь на авторизации. Скорее всего, в скрипте будут и другие "дыры", через которые можно получить спец. права. Нужно смотреть весь код, и внимательно писать sql запрос и т.д.
Просто следуйте рекомендациям и проблем будит меньше.

   
 
 автор: cheops   (01.02.2005 в 22:15)   письмо автору
 
   для: Atom   (01.02.2005 в 14:54)
 

Да эту функцию можно и так использовать.

   
 
 автор: Atom   (01.02.2005 в 14:54)   письмо автору
 
   для: cheops   (01.02.2005 в 14:33)
 

Я совсем о другом думал.
Я переменную в запросе в кавычки помещал.
Так, оказывается на сервере magic_quotes выключен, значит addsleshes.
А эту функцию можно в самом запросе проверять?
Тоесть SELECT * from table where login='".addsleshes($login)."' ?

   
 
 автор: cheops   (01.02.2005 в 14:33)   письмо автору
 
   для: Atom   (01.02.2005 в 14:24)
 

А куда вы ставите обратные кавычки? Здесь имеется ввиду замена прямых кавычек в тексте
O'REILLY

на обратные перед помещением текста в базу данных

   
 
 автор: Atom   (01.02.2005 в 14:24)   письмо автору
 
   для: cheops   (01.02.2005 в 14:01)
 

А насчет универсальных прав.. Там таких нет =) Управление осуществляется через админку, защищенную htpasswd

Блин, я окончательно запутался.
У меня включены magic_quotes. При запросе я ставлю обр. кавычки, и нифига. С обычными работает скрипт, а с обратными нет.

   
 
 автор: cheops   (01.02.2005 в 14:01)   письмо автору
 
   для: localGhost   (01.02.2005 в 05:01)
 

Хм... скорее всего злоумышленник не будет пытаться сломать базу на этапе регистрации и постарается получить пароль к логину с универсальными правами... т.е. нужно смотреть регистрацию пользователей.

   
 
 автор: 1dt.w0lf   (01.02.2005 в 12:45)   письмо автору
 
   для: Atom   (01.02.2005 в 10:22)
 

---
Если ты не укажешь пароля, то он не начнет выполнять скрипт. Я там не полностью расписал просто. Тоесть if (isset($_POST['login']) && isset($_POST['password'])) {
//authorise script
}
elseif(empty($_POST['login'] || empty($_POST['password']))
{
//input form
}
---

1. isset еще не означает что переменная не пуста, попробуй просто передать пустую переменную
2. зачем elseif? else вполне достаточно.

   

Сообщения:  [1-10]    [11-20]  [21-28] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования