X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Обработка входящих данных
НЕПЛОХОЙ
НЕПЛОХОЙ
Topic Starter сообщение 10.7.2009, 13:25; Ответить: НЕПЛОХОЙ
Сообщение #1


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

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

ЕСЛИ ДАННЫЕ ЧИСЛОВЫЕ:
[php]$id = (int)$_GET['id'];[/php]
или
[php]if(!preg_match("/[0-9]/",$id)) {
echo "Не корректный запрос";
exit();
}[/php]

ЕСЛИ ДАННЫЕ СТРОКОВЫЕ:
[php]$page = $_GET['page'];
$page = htmlspecialchars($page);
$page = str_replace("update","",$page);[/php]
или
[php]if(!preg_match("/[A-Za-z0-9]/",$page)) {
echo "Не корректный запрос";
exit();
}[/php]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
v1ex
v1ex
сообщение 10.7.2009, 13:33; Ответить: v1ex
Сообщение #2


Конечно-же регулярки безопасней. В случае:
[php]$id = (int)$_GET['id'];[/php]
Что если в $_GET['id'] будет значение "ха-ха"? :)

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


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

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

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


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
Topic Starter сообщение 10.7.2009, 13:45; Ответить: НЕПЛОХОЙ
Сообщение #3


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

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

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

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

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

а вот за небольшую лекцию по регуляркам спасибо ;) не сильно я в них разбираюсь...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
v1ex
v1ex
сообщение 10.7.2009, 13:48; Ответить: v1ex
Сообщение #4


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

Ну я понял, что вырезает )) Я просто не понял зачем :) Видимо какая-то "защита" от SQL инъекций ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 10.7.2009, 14:46; Ответить: FordogeN
Сообщение #5


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


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.7.2009, 23:31; Ответить: ZiTosS
Сообщение #6


Евгений,
Не наглядно
[php]$id = (int)$_GET['id'];[/php]
Я бы писал так:
[php]$id = isset($_GET['id']) ? intval($_GET['id']) : 0;[/php]
или просто так, если уверен что переменная существует
[php]$id = intval($_GET['id']);[/php]
Зачем использовать приведение типов, если существует стандартная функция.

[php]$page = isset($_GET['page']) ? mysql_escape_string($_GET['page']) : "";[/php]
или
[php]$page = isset($_GET['page']) ? addslashes($_GET['page']) : "";[/php]
Вот и вся защита от SQL-инъекций. Сами подумайте, если вы уже проэкранировали спецсимволы, то строка уже обязательно будет строкой, никакие5 конструкции не выполнятся... Мы экранировали уже все ковычки.


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebKiD
WebKiD
сообщение 14.7.2009, 2:01; Ответить: WebKiD
Сообщение #7


Спасибо, буду разбираться. Действительно очень нужная тема.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Troy_mw
Troy_mw
сообщение 23.7.2009, 19:16; Ответить: Troy_mw
Сообщение #8


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


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
phpuser
phpuser
сообщение 23.7.2009, 21:12; Ответить: phpuser
Сообщение #9


А нельзя описать что это? Для чего использовать? Ну и пару примеров в добавок.
Если не сложно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Troy_mw
Troy_mw
сообщение 24.7.2009, 8:56; Ответить: Troy_mw
Сообщение #10


1 функция экранирует все символы которые используются в mysql а 2 делает тоже самое только с учётом кодировки
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6860 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3905 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15257 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыpocket-exchange.com - обмен электронных валют. Низкие курсы! Быстрая обработка заявок!
8 pocket_exchange 9362 12.8.2022, 15:30
автор: pocket_exchange
Открытая тема (нет новых ответов) Сбор Данных Услуг И Специалистов Яндекс.Услуги
2 zkalinin 2378 26.5.2022, 17:10
автор: zkalinin


 



RSS Текстовая версия Сейчас: 23.4.2024, 15:50
Дизайн