HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 26.05.2010, 14:02
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

o4zloy два запроса вместо одного, и следует напомнить, что md5 не самый быстрый алгоритм

Смысл темы не в том, чтобы защитить данное конкретное обращение к БД (да, мд5 от введенных данных будет работать). А чтобы приучить к правильному подходу к работе с СУБД в целом. Вместо того чтобы выдумывать костыль под каждый запрос, нужно просто правильно обрабатывать данные
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #2  
Старый 26.05.2010, 15:32
o4zloy
Новичок
Регистрация: 25.05.2010
Сообщений: 5
С нами: 8402739

Репутация: 0
По умолчанию

Цитата:
o4zloy два запроса вместо одного, и следует напомнить, что md5 не самый быстрый алгоритм
Почему два?
Если, в базе находим этот хеш, значит юзер прошел проверку логина\пароля.
Насчет быстродействия, при входе на ресурс, все равно идет проверка пароля, и используют хеширование(двойное, а иногда и тройное) или это не так?)
Почему бы не совместить, с пользой для дела, полностью исключив при этом потенциальную дыру(в случае отсутствия защиты).

Цитата:
Смысл темы не в том, чтобы защитить данное конкретное обращение к БД.
А чтобы приучить к правильному подходу к работе с СУБД в целом.
Ммм...в целом? Тема вряд ли осилит такие масштабы, не на один том получится.
По моему, тема посвящена формированию правильной выборки из бд без возможности нарушения запроса неверными данными от юзера.

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

  #3  
Старый 16.07.2010, 09:07
Greaves
Новичок
Регистрация: 07.04.2007
Сообщений: 29
С нами: 10049831

Репутация: -8
По умолчанию

Цитата:
Сообщение от Ericlone  
That's true.What you said help me a lot.Thanks.
Для Вас Не Русских..

Но судя по его 3-ем сообщениям, зря помойму написал все это.

Specially for you for us at a forum separate section is taken away /forum72.html .

Or write in Russian - on given here the answer it is not necessary to Give messages.

Please do not write to all Thanks message is it is considered Flood, and the request for the help, a reality, competent a question and you always receive on it the answer to our Resource.

Hope we each other have understood.

PS: Read Section Rules

Namely

# it is mandatory in header to mirror a problem essence. Authors to those with names "help", "how to make?" Will be punished etc.

# For "silly" questions of beginners on syntax of language the special fixed subjects are created.

The earnest entreaty (even, more likely, the requirement) to write to beginners the questions exclusively there not to litter with them section.
 
Ответить с цитированием

  #4  
Старый 06.08.2010, 15:17
ByGreez
Новичок
Регистрация: 28.11.2009
Сообщений: 4
С нами: 8658813

Репутация: 0
По умолчанию

Что пройдёт?

Написал проверку переменных , что пройдёт?

(какие sql-inj и xss)

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]security[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]){

if([/COLOR][COLOR="#0000BB"]is_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])){

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]array_map[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"security"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}else{

if ([/COLOR][COLOR="#0000BB"]is_int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) ||[/COLOR][COLOR="#0000BB"]is_float[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])) {

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];

}

if([/COLOR][COLOR="#0000BB"]get_magic_quotes_gpc[/COLOR][COLOR="#007700"]()){

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]stripslashes[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]htmlentities[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ENT_QUOTES[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"windows-1251"[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strip_tags[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_real_escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];



}

}[/COLOR][/COLOR
 
Ответить с цитированием

  #5  
Старый 06.08.2010, 15:27
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

ByGreez вы создали здесь раскрытие путей. strip_tags ничего не изменит, потому что данные перед ним обрабатываются htmlentities.

Каждые N недель кто нить приходит с "универсальной" функцией, которая должна спасать от собственного идиотизма - не получится так. Отделяйте мух от котлет - данные в БД и защита от sql-inj - это одно, выводимые данные и защиты от XSS это другое, защита от CSRF - это третье и так далее. И связаны друг с другом они очень и очень виртуально
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #6  
Старый 06.08.2010, 15:41
ByGreez
Новичок
Регистрация: 28.11.2009
Сообщений: 4
С нами: 8658813

Репутация: 0
По умолчанию

Простите, что-то я не особо вкурил, где именно раскрытие путей? Какого вида будет запрос?(Если можно приведите пример =) )

Спасибо.

p.s. Поправил :

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]
[/
COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]security[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]){

if ([/COLOR][COLOR="#0000BB"]is_int[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) ||[/COLOR][COLOR="#0000BB"]is_float[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])) {

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];

}

if([/COLOR][COLOR="#0000BB"]is_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])){

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]array_map[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"security"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}else{

if
([/COLOR][COLOR="#0000BB"]get_magic_quotes_gpc[/COLOR][COLOR="#007700"]()){

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]stripslashes[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strip_tags[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]htmlentities[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ENT_QUOTES[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"windows-1251"[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_real_escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];



}

}

[/
COLOR][/COLOR
 
Ответить с цитированием

  #7  
Старый 06.08.2010, 16:01
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
С нами: 8663063

Репутация: 226
По умолчанию

Цитата:
Сообщение от None  
Note: To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
это насчёт функции is_int
 
Ответить с цитированием

  #8  
Старый 06.08.2010, 16:07
ByGreez
Новичок
Регистрация: 28.11.2009
Сообщений: 4
С нами: 8658813

Репутация: 0
По умолчанию

Угу, перечитал всю тему сначала, это уже было. Поправил. Теперь можно делать запрос к БД ? Или есть ещё что-то?

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]security[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]){

if ([/COLOR][COLOR="#0000BB"]is_numeric[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])) {

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];

}

if([/COLOR][COLOR="#0000BB"]is_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"])){

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]array_map[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"security"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}else{

if
([/COLOR][COLOR="#0000BB"]get_magic_quotes_gpc[/COLOR][COLOR="#007700"]()){

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]stripslashes[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

}

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strip_tags[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]htmlentities[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ENT_QUOTES[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"windows-1251"[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_real_escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]);

return[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"];



}

}

[/
COLOR][/COLOR
 
Ответить с цитированием

  #9  
Старый 06.08.2010, 16:24
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

ByGreez mysql_real_escape_string($value); - you need nothing else для запроса к базе.

Насчет раскрытия я ошибся - апач не дает передавать массив произвольной вложенности, а так бы скрипт сваливался с recursion limit.

Плюс вы сделали фактическую ошибку, если срабатывает условие is_array - значение из функции не возвращается. Может все таки не стоит изобретать велосипед?
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #10  
Старый 06.08.2010, 16:30
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
С нами: 8663063

Репутация: 226
По умолчанию

согласен с Gifts, тем более как для int так и для text(varchar) можно использовать mysql_real_escape_string. есть исключения, но редко
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.