HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

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

PHP код:
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
Провел на форуме:
10575

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

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

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

Репутация: 114
Отправить сообщение для -=Zhenek=- с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

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

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

PHP код:
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
Провел на форуме:
10575

Репутация: 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
Провел на форуме:
162143

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

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

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

Репутация: 1304


По умолчанию

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

Код:
Code:
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
Провел на форуме:
2268

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

Цитата:
Сообщение от nc.STRIEM  
nc.STRIEM said:
а не прощи ли сделать
PHP код:
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 код:
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
Мы передадим строку:

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

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

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

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

Репутация: 123
Отправить сообщение для phpdreamer с помощью ICQ
По умолчанию

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

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

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

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

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

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

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

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

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





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


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




ANTICHAT.XYZ