Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
С родного ли хоста пришли данные... |

22.11.2007, 15:08
|
|
Постоянный
Регистрация: 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";}
?>
ну и т.д.....так вот нужно фильтровать эти геты? потому что смотрел несколько движков, нигде не фильтруют их..
|
|
|

22.11.2007, 15:20
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
Может это из-за http:// или www?.
из-за ковычек.
ак вот нужно фильтровать эти геты?
нет
|
|
|

22.11.2007, 15:33
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
.:ENOT:., лучше поиск в реферере осуществлять по $_SERVER["HTTP_HOST"], но будь готов что реферер подделывается в два пинка...
В данном случае геты фильтровать не нужно, т.к. ты с ними не работаешь (не evalишь, не сохраняешь в базе, не выводишь куда либо... Если юзер будет с ними химичить - максимум чего добьётся - пустрой страницы.
|
|
|

22.11.2007, 16:15
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
.:ENOT:., лучше поиск в реферере осуществлять по $_SERVER["HTTP_HOST"], но будь готов что реферер подделывается в два пинка...
Тогда как лучше осуществить проверку?
Короче вот в чём суть, пишу я движок (свой первый в жизни движок  ). Есть там форма входа, которая находится на нескольких страницах, скрипт входа соответственно login.php так вот мне нужно сделать проверку, действительно ли данные пришли с родного хоста или нет.
Можно было бы конечно создать какой-нить файл типо login_form.php и инклудить его в те места где должна быть форма, но эт тоже не выход....или можно было создать форму входа прям в самом login.php но так не получится в данном случае, да и переделывать код не очень хочется.
Вариант со скрытым полем в форме тоже не подходит
С гетами всё понятно, спасибо, всем по плюсегам))
Последний раз редактировалось .:ENOT:.; 22.11.2007 в 16:22..
|
|
|

22.11.2007, 16:38
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
В общем проверку на реферер делай так (проверка по хосту):
PHP код:
if (strstr($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?");
или так (проверка включая страницу):
PHP код:
if (strstr($_SERVER["HTTP_REFERER"], "somehost.somedomain/somedir/somepage.php") === FALSE) die("Креведко?");
Но я ещё раз повторяюсь - это не панацея...
|
|
|

22.11.2007, 16:57
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
[x26]VOLAND
Вот за это огромное спасибо, буду пользоваться 
groundhog
Спасибо, буим значит так проверять....
Жалко что плюсеги не могу ещё раз поставить, но обещаю))
Просто хотел реализовать чтобы данные приходили с родного хоста, а если заголовки подделаны или с другого хоста пришли, чтобы не авторизовывал. Хотя может я уж слишком преувеличиваю, просто начитался книжек по безопасному php-кодингу и теперь фильтрую всё, даже то что в общем-то не надо фильтровать, поэтому и подумал что надо бы реализовать проверку входных данных. Движок делаю под свои нужны. поэтому не хочется чтоб дырявый как сито был, а всё фильтровалось и проверялось. да и по большей мере самому себе лучше будет в дальнейшем написании безопасных скриптов 
|
|
|

22.11.2007, 17:07
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
.:enot:., золотое правило в веб-разработке - никаким данным, приходящим от пользователя доверять нельзя. Всё нужно перепроверять...
|
|
|

22.11.2007, 22:50
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
PHP код:
if (strstr($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?");
Я бы сделал так:
PHP код:
if (strpos($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Креведко?");
В документации сказано, что strpos работает быстрее strstr, поэтому его использование предпочтительней
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|