Форум » Система построения сайтов » Защита системы » Защита формы от подмены полей
Открыть Ответить

Защита формы от подмены полей

0.00

0.00

1
12.03.2010 00:24:49 12.03.2010 00:50:16

Коллеги, нужен совет по защите формы от подмены полей.
Если на пальцах, то нужно примерно следующее:

  1. Есть обычная форма содержащая N-количество полей, допустим такой простейший код:

<form action='action.php' enctype='multipart/form-data' method='post'><br /> <input name='primer' type='text' value="12345"><br /> </form>

2. Необходимо защить эту форму от запуска с другого домена или доступа через CURL, проще говоря, чтобы не смогли подделать саму форму и содержимое полей и обработать форму на другом домене.

Что-то ни чего кроме ввода скрытого поля с сессией и его проверки после отработки формы не приходит на ум!
Кто что подкинет, какую идею?
Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

12.03.2010 00:38:02 12.03.2010 00:47:38

слушай я с про сони не соображаю вообще но чета такое у меня в моей голове крутится но вспомнить не могу поэтому замачиваться не буду а тупо выложу один вариант

код из системы SLAED Смайл - 05 Смайл - 02:

$host = (getenv("HTTP_HOST")) ? getenv("HTTP_HOST") : getenv("SERVER_NAME");
if (!intval($_FILES['Filedata']['size']) && !stristr(getenv("HTTP_REFERER"), $host)) header("Location: index.php?error=404");


в этом случае на другом хосте кроме страницы index.php?error=404
ни фига подгрузить не смогут

Группа
Клиент
Пункты
706
Регистрация
24.06.2006
Пол
Мужчина
Из
Москва
Предупреждения
Нет
ZOMBiE
ZOMBiE
4.05

4.05

12.03.2010 00:45:13 12.03.2010 00:46:13

ZOMBiE, Смайл - 06 ну не смеши меня, я уже на сессии замахнулся, а ты мне рефера и хост рисуешь - это защита от идиотов.
Я о серьезной защите говорю.
Мне не важно подгрузят форму на другом хосте или нет, мне важно чтобы эта форма НЕ смогла отработать на том хосте и послать результаты мне.
Тоесть реально могут скопировать код формы, заменить значение полей и послать результат отработки формы на мой хост - мне нужно как раз от этого защититься, чтобы хост умел различать родная это форма или поддельная.

Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

12.03.2010 00:46:47 12.03.2010 00:50:16

я же сказал я еще сплю поэтому за себя не ручаюсь Смайл - 02
ща пол часика поготь я кофе наверну для соображалки Смайл - 06


даже адрес нормально набрать не смог =))))
вот те и результат Смайл - 05 Смайл - 05 Смайл - 05 http://www.slaed.net/forum-view-9069-last.html

не надо по ночам кодить ото будете как я, меня утром жена будет а я ей переменная гет равна =)))))))

Группа
Клиент
Пункты
706
Регистрация
24.06.2006
Пол
Мужчина
Из
Москва
Предупреждения
Нет
ZOMBiE
ZOMBiE
4.05

4.05

12.03.2010 00:58:44 12.03.2010 00:59:00

Да это не к спеху, просто советы нужны, как это провернуть половчее, чтобы потом даже самому небыло желания пытаться подделать.
Форма не простая - платежный интерфейс, вот поэтому и думаю-сочиняю...

Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

12.03.2010 01:40:04 12.03.2010 01:54:55

думаю "сало" тут как раз поможет так же, как и вообще от ботов. у меня сделано примерно так...

пишем в function.php две простенькие хункции:

function get_salt($use=1){
	if($use){
		if(!isset($_SESSION['salt'])) set_salt();
		return $_SESSION['salt'];
	}else return '';
}

function set_salt($use=1){
	global $conf;
	if($use) $_SESSION['salt'] = gen_pass(mt_rand($conf['salt_min'], $conf['salt_max'])).'_'.mt_rand(0, 9);
}

где $conf['salt_min'] и $conf['salt_max'], это количество символов в "сале".

при необходимости в нужных модулях можно так же добавить в настройки опцию вкл/выкл защиту. использование новшества выглядит примерно следующим образом:

include('config/conf_module.php');
function show_form(){
global $conf, $conf_module, $stop;

$salt = get_salt($conf_module['salt']);

head();
open();
if($stop) echo $stop;
echo '<form method="post" action="index.php"><div>
<input type="text" name="'.$salt.'title" />
<input type="text" name="'.$salt.'mail" />
<input type="hidden" name="name" value="'.$conf['name'].'" />
<input type="hidden" name="op" value="send_form" />
<input type="submit" value="Send" />
</div></form>';
close();
foot();
}
function send_form(){
global $conf, $conf_module, $stop;

$salt = get_salt($conf_module['salt']);

$title = text_filter($_POST[$salt.'title']);
$mail = text_filter($_POST[$salt.'mail']);

set_salt($conf_module['salt']);

if(!$title || !$mail) $stop = 'Error!';
if(!$stop) echo 'TITLE = '.$title.'; MAIL = '.$mail;
else show_form();
}


реализовано на Кино для КПК Смайл - 02

Группа
Клиент
Регистрация
07.06.2005
Пол
Мужчина
Из
Моск. обл., п. Белоомут
Предупреждения
Нет
Алексей
Алексей
3.69

3.69

12.03.2010 09:41:57 12.03.2010 09:43:59

спасибо, Алексей, попробую.
В принципе как я и мыслил - применять сессии.
Может еще какие-то идеи есть, кроме сессии?

Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

12.03.2010 22:04:45

Мысли у всех иссякли чтоли?
Или все шарящие в даун ушли? Смайл - 06

Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

14.03.2010 21:21:04

GRAFLEKX, не, тут надо так:
Все дауны иссякли, при виде таких мыслей Смайл - 05

Идея Алексея , кстати, понравилась. Чем не выход?

Группа
Посетители
Пункты
772
Регистрация
01.06.2006
Пол
Мужчина
Из
Моздок
Предупреждения
Нет
sam07
sam07
3.91

3.91

14.03.2010 22:59:56

sam07, да эта идея и мне пришла в голову буквально сразу - использовать сессии для проверки целостности формы, только у меня всё гораздо проще.
Я просто собирал, так сказать, идеи, как можно еще это осуществить.
Ну не может быть, чтобы вся защита базировалась только на сессиях (хотя в надежности я не сомневаюсь), должно быть еще что-то, только это что-то я ни как не придумаю.
Возможно я пытаюсь изобрести велосипед. Смайл - 09

Группа
Супермодераторы
Пункты
1595
Регистрация
18.09.2008
Пол
Мужчина
Из
Россия
Предупреждения
Нет
GRAFLEKX
GRAFLEKX
3.92

3.92

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код