Чтение RSS каналов

Форум

Открыть Ответить

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

0

0
1
12.03.2010 00:24:4912.03.2010 00:50:16
Коллеги, нужен совет по защите формы от подмены полей.
Если на пальцах, то нужно примерно следующее:

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

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

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

Что-то ни чего кроме ввода скрытого поля с сессией и его проверки после отработки формы не приходит на ум!
Кто что подкинет, какую идею?
3.97

3.97
2
12.03.2010 00:38:0212.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
ни фига подгрузить не смогут
4.05

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

3.97
4
12.03.2010 00:46:4712.03.2010 00:50:16
я же сказал я еще сплю поэтому за себя не ручаюсь Смайл - 02
ща пол часика поготь я кофе наверну для соображалки Смайл - 06


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

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

4.05
5
12.03.2010 00:58:4412.03.2010 00:59:00
Да это не к спеху, просто советы нужны, как это провернуть половчее, чтобы потом даже самому небыло желания пытаться подделать.
Форма не простая - платежный интерфейс, вот поэтому и думаю-сочиняю...
3.97

3.97
6
12.03.2010 01:40:0412.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
3.69

3.69
7
12.03.2010 09:41:5712.03.2010 09:43:59
спасибо, Алексей, попробую.
В принципе как я и мыслил - применять сессии.
Может еще какие-то идеи есть, кроме сессии?
3.97

3.97
8
12.03.2010 22:04:45
Мысли у всех иссякли чтоли?
Или все шарящие в даун ушли? Смайл - 06
3.97

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

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

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

3.97
Открыть Ответить
обработатьсодержимоепрощеподделатьсмоглиговорячтобызащитаформусамуподменыполейформыдругомдомене
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь