ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

С родного ли хоста пришли данные...
  #1  
Старый 22.11.2007, 15:08
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию С родного ли хоста пришли данные...

В общем нужно чтобы при входе на страницу проверялось с родного ли хоста пришёл посетитель на эту страницу.
Использую strstr(), но работает некоректно:

PHP код:
<?php
#Адрес сайта
$servname "http://site.ru/";
#Получаю реферер
$ref "getenv('HTTP_REFERER')";
if(
strstr($servname'$ref'))
{echo
"Всё ок";}
else
{echo
"Данные пришли с другого сайта";}
?>
Может это из-за http:// или www?..... полночи сидел пытался сделать проверку используя и strstr() и strpos() и substr() ничего не получается....намучился, решил обратиться к вам

И ещё один вопрос
Нужно ли фильтровать get-запросы, например:
PHP код:
<?php
if($_GET['do'] == null or empty($_GET['do']))
{echo
"Это страница test.php";}
elseif(
$_GET['do'] == 'preved')
{echo
"Это страница test.php?do=preved";}
elseif(
$_GET['do'] == 'krevedko')
{echo
"Это страница test.php?do=krevedko";}
?>
ну и т.д.....так вот нужно фильтровать эти геты? потому что смотрел несколько движков, нигде не фильтруют их..
 
Ответить с цитированием

  #2  
Старый 22.11.2007, 15:20
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

Цитата:
Может это из-за http:// или www?.
из-за ковычек.
Цитата:
ак вот нужно фильтровать эти геты?
нет
 
Ответить с цитированием

  #3  
Старый 22.11.2007, 15:33
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

.:ENOT:., лучше поиск в реферере осуществлять по $_SERVER["HTTP_HOST"], но будь готов что реферер подделывается в два пинка...

В данном случае геты фильтровать не нужно, т.к. ты с ними не работаешь (не evalишь, не сохраняешь в базе, не выводишь куда либо... Если юзер будет с ними химичить - максимум чего добьётся - пустрой страницы.
 
Ответить с цитированием

  #4  
Старый 22.11.2007, 16:15
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Цитата:
.:ENOT:., лучше поиск в реферере осуществлять по $_SERVER["HTTP_HOST"], но будь готов что реферер подделывается в два пинка...
Тогда как лучше осуществить проверку?
Короче вот в чём суть, пишу я движок (свой первый в жизни движок). Есть там форма входа, которая находится на нескольких страницах, скрипт входа соответственно login.php так вот мне нужно сделать проверку, действительно ли данные пришли с родного хоста или нет.
Можно было бы конечно создать какой-нить файл типо login_form.php и инклудить его в те места где должна быть форма, но эт тоже не выход....или можно было создать форму входа прям в самом login.php но так не получится в данном случае, да и переделывать код не очень хочется.
Вариант со скрытым полем в форме тоже не подходит

С гетами всё понятно, спасибо, всем по плюсегам))

Последний раз редактировалось .:ENOT:.; 22.11.2007 в 16:22..
 
Ответить с цитированием

  #5  
Старый 22.11.2007, 16:38
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

В общем проверку на реферер делай так (проверка по хосту):

PHP код:
if (strstr($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?"); 
или так (проверка включая страницу):

PHP код:
if (strstr($_SERVER["HTTP_REFERER"], "somehost.somedomain/somedir/somepage.php") === FALSE) die("Креведко?"); 
Но я ещё раз повторяюсь - это не панацея...
 
Ответить с цитированием

  #6  
Старый 22.11.2007, 16:57
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

[x26]VOLAND
Вот за это огромное спасибо, буду пользоваться
groundhog
Спасибо, буим значит так проверять....

Жалко что плюсеги не могу ещё раз поставить, но обещаю))

Цитата:
А зачем тебе вообще это?
Просто хотел реализовать чтобы данные приходили с родного хоста, а если заголовки подделаны или с другого хоста пришли, чтобы не авторизовывал. Хотя может я уж слишком преувеличиваю, просто начитался книжек по безопасному php-кодингу и теперь фильтрую всё, даже то что в общем-то не надо фильтровать, поэтому и подумал что надо бы реализовать проверку входных данных. Движок делаю под свои нужны. поэтому не хочется чтоб дырявый как сито был, а всё фильтровалось и проверялось. да и по большей мере самому себе лучше будет в дальнейшем написании безопасных скриптов
 
Ответить с цитированием

  #7  
Старый 22.11.2007, 17:07
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

.:enot:., золотое правило в веб-разработке - никаким данным, приходящим от пользователя доверять нельзя. Всё нужно перепроверять...
 
Ответить с цитированием

  #8  
Старый 22.11.2007, 22:50
Аватар для [Raz0r]
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

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

PHP код:
if (strstr($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?"); 
Я бы сделал так:
PHP код:
if (strpos($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?"); 
В документации сказано, что strpos работает быстрее strstr, поэтому его использование предпочтительней
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глоссарий по Raid технологии Alexsize Аппаратное обеспечение 1 20.06.2007 11:04
Обзор протокола Http bxN5 Чужие Статьи 2 13.03.2007 01:11
Безопасность по заказу. Кредитные карточки в интернете dinar_007 Мировые новости 0 14.08.2006 19:51
Из магазинов "утекают" данные о кредитках Nova Мировые новости 0 17.03.2006 15:13
Сетевой сканер Nmap. Руководство пользователя foreva Чужие Статьи 1 08.02.2005 16:36



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


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




ANTICHAT.XYZ