Перейти к содержимому


Пользователь месяца
WGN WGN 1-й за Июль
Очков активности: 850 2 темы, 75 сообщений, 7 баллов репутации
Сайт: worldgamenews.com
ТОП самых активных за этот месяц
  • Фотография TimurR
    #1

    TimurR
    Очков активности: 262.5 3 темы, 16 сообщений, 7 баллов репутации

  • Фотография WGN
    #2

    WGN (worldgamenews.com)
    Очков активности: 64.5 Вне конкурса за определение пользователя месяца

  • Фотография ShowPrint
    #3

    ShowPrint (ShowPrint.ru)
    Очков активности: 52.5 0 тем, 7 сообщений, 5 баллов репутации

  • Фотография BlackLion
    #4

    BlackLion
    Очков активности: 36 0 тем, 24 сообщения, 1 балл репутации

  • Фотография Vmir
    #5

    Vmir
    Очков активности: 24 Вне конкурса за определение пользователя месяца

  • Фотография Ixman
    #6

    Ixman (o5cat.ru)
    Очков активности: 21 0 тем, 7 сообщений, 2 балла репутации

  • Фотография Napoleon-007
    #7

    Napoleon-007
    Очков активности: 21 0 тем, 14 сообщений, 1 балл репутации

  • Фотография alekswebart
    #8

    alekswebart
    Очков активности: 19.5 1 тема, 10 сообщений, 1 балл репутации

  • Фотография r0mZet
    #9

    r0mZet (rz-style.ru)
    Очков активности: 18 2 темы, 6 сообщений, 1 балл репутации

  • Фотография profi
    #10

    profi (1informer.com)
    Очков активности: 12 0 тем, 8 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 15.08.2018
Топ 5 участников по репутации


Обработка входящих данных

#1 Евгений

Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0
0

Отправлено 10 July 2009 - 12:25

В этой теме я бы хотел обсудить проверку (обработку) входящих данных, как на ваш взгляд будет надежднее?

лично я обычно использую вот такие конструкции.

ЕСЛИ ДАННЫЕ ЧИСЛОВЫЕ:
$id = (int)$_GET['id'];

или
if(!preg_match("/[0-9]/",$id)) {
echo "Не корректный запрос";
exit();
}


ЕСЛИ ДАННЫЕ СТРОКОВЫЕ:
$page = $_GET['page'];
$page = htmlspecialchars($page);
$page = str_replace("update","",$page);

или
if(!preg_match("/[A-Za-z0-9]/",$page)) {
echo "Не корректный запрос";
exit();
}

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Передача данных между PHP и JavaScript
  2. Проверяем переменную с помощью isset()
  3. Обработка PHP-кода - полученного из базы данных
  4. Как сделать форму и её обработчик в одном файле?
  5. Передача видео в плеер? Ретранслятор!

#2 v1ex

v1ex
  • Неактивные
  • 225 сообщений
  • Репутация: 0

Отправлено 10 July 2009 - 12:33

Конечно-же регулярки безопасней. В случае:
$id = (int)$_GET['id'];

Что если в $_GET['id'] будет значение "ха-ха"? :)

$page = str_replace("update","",$page);

А это, что вы делаете, я не понял?


И еще у вас не правильные регулярки:
/^[0-9]+$/
/^[a-z0-9]+$/i
^ - значит начало слова;
$ - конец;
i - игнорировать регистр

А в вашем случае, если просто, что-нибудь, где-нибудь встречается удолетворяющее выражению, будет возвращено true.
  • 0

#3 Евгений

Евгений
    Topic Starter
  • Неактивные
  • 481 сообщений
  • Репутация: 0

Отправлено 10 July 2009 - 12:45

Что если в $_GET['id'] будет значение "ха-ха"?

ничего не будет, id=0, только что проверил.

$page = str_replace("update","",$page);
А это, что вы делаете, я не понял?

вырезает слово "update" :) эту проверку я на днях вырезал из какого то движка и не сильно разбирался в чем суть...

^ - значит начало слова;
$ - конец;
i - игнорировать регистр

а вот за небольшую лекцию по регуляркам спасибо ;) не сильно я в них разбираюсь...
  • 0

#4 v1ex

v1ex
  • Неактивные
  • 225 сообщений
  • Репутация: 0

Отправлено 10 July 2009 - 12:48

вырезает слово "update" smile.gif эту проверку я на днях вырезал из какого то движка и не сильно разбирался в чем суть...

Ну я понял, что вырезает )) Я просто не понял зачем :) Видимо какая-то "защита" от SQL инъекций ;)
  • 0

#5 FordogeN

FordogeN
  • Неактивные
  • 1414 сообщений
  • Репутация: 0

Отправлено 10 July 2009 - 13:46

я тоже так понял, но я думаю тогда еще нужно чтоб вырезало DELETE


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#6 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 11 July 2009 - 22:31

Евгений,
Не наглядно
$id = (int)$_GET['id'];

Я бы писал так:
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

или просто так, если уверен что переменная существует
$id = intval($_GET['id']);

Зачем использовать приведение типов, если существует стандартная функция.

$page = isset($_GET['page']) ? mysql_escape_string($_GET['page']) : "";

или
$page = isset($_GET['page']) ? addslashes($_GET['page']) : "";

Вот и вся защита от SQL-инъекций. Сами подумайте, если вы уже проэкранировали спецсимволы, то строка уже обязательно будет строкой, никакие5 конструкции не выполнятся... Мы экранировали уже все ковычки.
  • 0

#7 WebKiD

WebKiD
  • Неактивные
  • 27 сообщений
  • Репутация: 0

Отправлено 14 July 2009 - 01:01

Спасибо, буду разбираться. Действительно очень нужная тема.
  • 0

#8 Troy

Troy
  • Неактивные
  • 18 сообщений
  • Репутация: 0

Отправлено 23 July 2009 - 18:16

Ещё про mysql_escape_string() и mysql_real_escape_string() надо не забывать
  • 0

#9 phpuser

phpuser
  • Неактивные
  • 520 сообщений
  • Репутация: 8

Отправлено 23 July 2009 - 20:12

А нельзя описать что это? Для чего использовать? Ну и пару примеров в добавок.
Если не сложно.


  • 0
Вникаю в тему создания сайтов...


#10 Troy

Troy
  • Неактивные
  • 18 сообщений
  • Репутация: 0

Отправлено 24 July 2009 - 07:56

1 функция экранирует все символы которые используются в mysql а 2 делает тоже самое только с учётом кодировки
  • 0

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru