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

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

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

is_array это остатки от старой функции,которая обрабатывала $_POST, $_GET целиком, даже не заметил когда правил.

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"]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
Приведите свой конкретный пример, и тогда "изобретении велосипеда" закончиться, и можно будет вообще тему закрывать =)!

Спасибо за помощь.
 
Ответить с цитированием

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

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

Цитата:
Сообщение от Gifts  
ByGreez
mysql_real_escape_string($value); - you need nothing else для запроса к базе.
=). Всё, спасибо. Только ещё нужно будет теги повырезать.
 
Ответить с цитированием

  #103  
Старый 06.08.2010, 16:58
-=Zhenek=-
Участник форума
Регистрация: 31.12.2007
Сообщений: 279
С нами: 9663762

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

Цитата:
Сообщение от None  
1) Если поле в базе числовое, то: (int) (ну или intval()). Можно по модулю взять при использовании в LIMIT, но это не секурити-дырка.
а вот у тов ette есть статья там абзац про intval() вернет Тру если в передаваемом параметре есть хоть одна цифра. юзайте is_numeric для цифровых полей типа id и т.д
 
Ответить с цитированием

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

Репутация: 1304


По умолчанию

-=Zhenek=- насчет intval - ложь и провокация или пруфлинк с примером кода, когда intval вернет True - то есть булево значение.

intval возвращает целочисленное значение, причем если строка с произвольными данными - то возвращается число идущее в начале строки. Например

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'1234asdasdasdasd'[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]intval[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$a[/COLOR][COLOR="#007700"]));[/COLOR][COLOR="#FF8000"]// вернет int(1234)

[/COLOR][COLOR="#0000BB"]$b[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'asdsa1234asdasds'[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]intval[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$b[/COLOR][COLOR="#007700"]));[/COLOR][COLOR="#FF8000"]// вернет int(0)[/COLOR][/COLOR] 
ByGreez тему стоило закрыть если не после первого поста, то после 1-2 страницы. Но всегда найдутся люди, которые не поверят, что простое решение - самое эффективное, и постараются показать монструозную функцию, которая "спасет от всех проблем". Таких людей надо вовремя отлавливать и наставять на путь истинный, пока болезнь не распространилась
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

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

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

Насчёт intval :

Цитата:
Сообщение от None  
Returns the integer value of var
http://www.php.net/manual/en/function.intval.php
 
Ответить с цитированием

  #106  
Старый 23.10.2010, 18:30
SHiNiGaMi
Познающий
Регистрация: 03.01.2010
Сообщений: 42
С нами: 8606717

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

я когда еще не знал про intval делал так: $_GET[id] += 0; При арифметических операциях php, как известно, отбрасывает "нецифры"
 
Ответить с цитированием

  #107  
Старый 23.10.2010, 18:48
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

SHiNiGaMi и радовали хеккеров раскрытием путей. При передаче массива (http://localhost/?id[]=bang) получите:

Код:
Fatal error: Unsupported operand types in [путь]/index.php on line 5
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #108  
Старый 30.04.2011, 09:23
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

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

Цитата:
Сообщение от nc.STRIEM  
а не прощи ли сделать
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]);

[/
COLOR][/COLOR
Никогда не подумаю что в МОА такие люди. Этот код не защищаеть от SQL-inj.

Представим что в эту функцию:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]);

[/
COLOR][/COLOR
Мы передадим строку:

Код:
\'
Тогда что получиться? Кавычка экранируется и получается вот это:

Код:
\\'
Тут мы видим что кавычка не за экранирована, поскольку \ стоящая перед ней экранирует \ стоящую после кавычки. Разумееться тут возникнут небольшие сложности, но SQL-inj остаёться возможно провести.

И всё же посоветую конвертировать в htmlspecialchars до помещения в БД.
 
Ответить с цитированием

  #109  
Старый 30.04.2011, 11:52
phpdreamer
Постоянный
Регистрация: 26.07.2009
Сообщений: 321
С нами: 8838619

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

Цитата:
Сообщение от XAMEHA  
И всё же посоветую конвертировать в htmlspecialchars до помещения в БД.
htmlspecialchars использовать нужно для защиты от XSS, а не от sql injection.

И не до записи в базу (от чего объем увеличивается), а перед выводом пользователю.

Читай еще раз первый пост:

mysql_real_escape_string()
 
Ответить с цитированием

  #110  
Старый 30.04.2011, 14:23
XAMEHA
Новичок
Регистрация: 15.05.2010
Сообщений: 0
С нами: 8417113

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

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

Цитата:
Сообщение от Gifts  
XAMEHA
со дня поста, который вы сейчас прокомментировали - прошло 3 года. Причем автору поста уже ответили что он не прав. Внимание вопрос - зачем вы это написали?
Насчет htmlspecialchars первый пост:
Темы в разделе программирования закрываются редко, т.к. любую программу можно сделать более быстрой, код более коротким. Поднятие старых тем под флагом оптимизации их кода лишь приветствуется.

А функцию htmlspecialchars я имелл виду использовать не для защиты от sql-inj.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.