Подмена данных

KODEAK

Полезный
Регистрация
11 Апр 2009
Сообщения
172
Реакции
16
что бы не использовать подмену данных в формах добавил hidden, но проведя небольшой тест выяснил что данные тоже можно подделать, достаточно отредактировать данные через firebug
К примеру отредактируйте значение
value="test"
в поле
<input type="hidden" name="q" value="test"> через firebug и тогда мы уже не будем иметь нужное нам значение value='test'
PHP:
<?php

if ($_POST['p'] == $_POST['q'])
{
	echo '11111111111111111111111111';
}

?>

<form action="test.php" method="post">
	<input type="text" name="p">
	<input type="hidden" name="q" value="test">
	<input type="submit" value="go">
</form>
каким еще можно способом защититься от подделки данных ?
 
Что-то я не совсем понял че нужно. Проверка что в примере всегда будет true, не вижу в ней смысла. А проверять данные... ну в хидден напр. можно писать мд5 сессии. Если я правильно, опять же, понял требования. Конкретнее напишите, что нужно то.
 
что бы не использовать подмену данных в формах добавил hidden, но проведя небольшой тест выяснил что данные тоже можно подделать, достаточно отредактировать данные через firebug
К примеру отредактируйте значение
value="test"
в поле
<input type="hidden" name="q" value="test"> через firebug и тогда мы уже не будем иметь нужное нам значение value='test'
PHP:
<?php
if ($_POST['p'] == $_POST['q'])
{
	echo '11111111111111111111111111';
}
?>
<form action="test.php" method="post">
	<input type="text" name="p">
	<input type="hidden" name="q" value="test">
	<input type="submit" value="go">
</form>
каким еще можно способом защититься от подделки данных ?
любые данные передаваемые со стороны клиента может менять/изменять/модифицировать - это аксиома.
=>
значит нужно сделать так, чтобы изменения клиента не позволяли ему обманывать нашу программу и получать то, что мы не планировали, чтобы он получил в обход нашего желания.
=>
значит такие данные должны быть зашифрованы и должны быть каждый раз разные, чтобы не возможно было один раз поймав нужное значение подделывать его в последствии.
для таких целей хорошо подходит mcrypt_encrypt/mcrypt_decrypt
почитайте:
 
либо просто создать скрытое поле hidden в котором хранить контрольную хеш сумму полей, которые нужно проверять и добавить её в переменную сесии сервера
PHP:
<?php
$_SESSIONS['secret'] = md5($p0. $p1);
?>
    <input type="hidden" value="<?php echo $p0;?>" name="p0">
    <input type="hidden" value="<?php echo $p1;?>" name="p1">
PHP:
if($_SESSIONS['secret']!= md5($_POST['p0'].$_POST['p0'] ){
echo "invalid";
}
 
Можно еще соль добавить чтобы юзверь сам не сгененрировал контрольную сумму.
 
Назад
Сверху