Просмотр полной версии : Проверка данных с сервера
День добрый всем!
Трабл такой: как мне проверить, откуда пришли данные - с моего сервака или нет?
То есть, данные из формы, расположенной на http://myservak.com, к скрипту myscript.php, должны обрабатываться и использоваться дальше, а из формы (такой же), лежащей на любом другом сервере и заполненной, не обрабатывались вообще?
Какая проверка должна быть в myscript.php?
Сорри за путанность ;-(
Ответ: ты не должен этого хотеть. Если интересно -- могу объяснить причины.
<?
// ©2003 Authors Mitya Aleshkovsky mitya@127.ru
$var=stripslashes(strip_tags($HTTP_POST_VARS['testvar']));
$from=$HTTP_SERVER_VARS['HTTP_REFERER'];
if(!isset($var))
{
echo "<form method=post action=\"".$PHP_SELF."\">\n<input type=\"text\" name=\"testvar\">\n</form>\n";
}else{
if(!isset($from))
{
echo "Не понятно вообще откуда были переданы данные.";
}
else
{
$from=parse_url($from);
if(stristr($from['host'],"myservak.com"))
{
echo "Переменная пришла именно с MyServak.com";
}
else
{
echo "Переменная пришла не понятно откуда.";
}
}
}
?>
Какая наивность.
$ch = curl_init ();
...
curl_setopt($ch,CURLOPT_REFERER, 'http://myservak.com/form.html');
...
$result = curl_exec ($ch);
...
Кстати, читая данный конкретный код проверки я нашел способ хакнуть его даже без использования серверных скриптов. :)
ну да.
ещё можно
@fputs($fp, "GET ".$uri["path"].$uri["query"]." HTTP/1.0\r\nHost: ".$uri["host"]."\r\nUser-Agent: NaebExplorer\r\nReferer: http://myservak.com\r\n\r\n");
А есть ли реальные способы это обойти?
Реальных способов обойти -- нет. Можно защититься от тупой пионерской установки формы, адресующей чужой скрипт. В этом подойдет твой скрипт, если исправить в нем ошибку.
Далее: есть мнение, что произошла подмена задач и на само деле требуется нечто иное, а не именно защита от поста с другого сайта.
P.S. Тестовый пример:
<?php
$from = 'http://myservak.com.foobar.ru/form.html';
$from=parse_url($from);
if(stristr($from['host'],"myservak.com"))
echo "Переменная пришла именно с MyServak.com";
else
echo "Переменная пришла не понятно откуда.";
?>
Думаю, исправить будет несложно. :)
Спасибо большое! Сейчас посмотрю ваш код, есличего не пойму - поспрошаю еще чуток, ОК?
А насчет неправильно поставленной задачи - согласен целиком и полностью, может я чего не так объяснил, сорри еще раз!
Просто мне нужно, чтоб скриптик мой рассматривал переменные, пришедшие только из МОЕЙ формы (лежащей на моем серваке), а со всех остальных - нет. А то и выводил чего в браузере ;-)
Оригинал написал(а) koox
пришедшие только из МОЕЙ формы
Ты все перепутал. Никакие переменные из ТВОЕЙ формы не приходят. Они приходят из браузера пользователя.
Да, верно, sorry again. Они должны приходить вообще из флэшки, которая ембэдится, например, в flash.html. То, что данные были внесены в форму во флэше, что лежит на моем серваке, я могу проверить? Переменные уходят к пхп-шному скрипты, который их обрабатывает и пишет что-либо на сервере в файл. А так получается, что разобрав пары переменная-значение и зная адрес скрипта, проще простого положить на лябой сервак форму, назвать поля, как надо и в экшне написать хттп://ля-ля.ком/скрипт.пхп, ГЕТ - и вуаля! А это не есть гуд ;-(
Оригинал написал(а) koox
Д А это не есть гуд ;-(
Для начала определимся: чем конкретно тебе это не нравится?
Оригинал написал(а) Crazy
Для начала определимся: чем конкретно тебе это не нравится?
Все нравится, спасибо за отклик!!!
Один вопрос: при определении $from в каком формате адрес указывать? Абсолютный адрес должен быть?
И, еще, ну не понимаю я (тупой, наверное):
а в форме флэшовой эта переменная $from вообще никак не фигурирует? Она просто в пхп-шном скрипте определяется, а после проверяется, и все?
Оригинал написал(а) koox
Все нравится,
Вопрос касался причин, по которым ты хочешь защищаться от постов с других серверов. Намекаю: полное понимание этого нужно не мне, а тебе.
Один вопрос: при определении $from в каком формате адрес указывать?
Внимательно перечитай исходник, который тебе дал juggy. Там все есть.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.