
26.05.2010, 14:02
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
1304
|
|
o4zloy два запроса вместо одного, и следует напомнить, что md5 не самый быстрый алгоритм
Смысл темы не в том, чтобы защитить данное конкретное обращение к БД (да, мд5 от введенных данных будет работать). А чтобы приучить к правильному подходу к работе с СУБД в целом. Вместо того чтобы выдумывать костыль под каждый запрос, нужно просто правильно обрабатывать данные
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
|
|
|

26.05.2010, 15:32
|
|
Новичок
Регистрация: 25.05.2010
Сообщений: 5
С нами:
8402739
Репутация:
0
|
|
o4zloy два запроса вместо одного, и следует напомнить, что md5 не самый быстрый алгоритм
Почему два?
Если, в базе находим этот хеш, значит юзер прошел проверку логина\пароля.
Насчет быстродействия, при входе на ресурс, все равно идет проверка пароля, и используют хеширование(двойное, а иногда и тройное) или это не так?)
Почему бы не совместить, с пользой для дела, полностью исключив при этом потенциальную дыру(в случае отсутствия защиты).
Смысл темы не в том, чтобы защитить данное конкретное обращение к БД.
А чтобы приучить к правильному подходу к работе с СУБД в целом.
Ммм...в целом? Тема вряд ли осилит такие масштабы, не на один том получится.
По моему, тема посвящена формированию правильной выборки из бд без возможности нарушения запроса неверными данными от юзера.
Конкретный пример, был приведен как вариант полного исключения нарушения запроса, он не претендует на лавры образцово-показательного, и уж тем более как шаблон всех запросов к бд.
|
|
|

16.07.2010, 09:07
|
|
Новичок
Регистрация: 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.
|
|
|

06.08.2010, 15:17
|
|
Новичок
Регистрация: 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]
|
|
|

06.08.2010, 15:27
|
|
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
|
|
|

06.08.2010, 15:41
|
|
Новичок
Регистрация: 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]
|
|
|

06.08.2010, 16:01
|
|
Участник форума
Регистрация: 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
|
|
|

06.08.2010, 16:07
|
|
Новичок
Регистрация: 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]
|
|
|

06.08.2010, 16:24
|
|
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
|
|
|

06.08.2010, 16:30
|
|
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
С нами:
8663063
Репутация:
226
|
|
согласен с Gifts, тем более как для int так и для text(varchar) можно использовать mysql_real_escape_string. есть исключения, но редко
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|