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

Тема в разделе "PHP", создана пользователем KODEAK, 5 авг 2011.

Модераторы: latteo
  1. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    161
    Симпатии:
    15
    что бы не использовать подмену данных в формах добавил 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>
    каким еще можно способом защититься от подделки данных ?
     
  2. SkiLLer

    SkiLLer

    Регистр.:
    22 авг 2007
    Сообщения:
    307
    Симпатии:
    64
    Что-то я не совсем понял че нужно. Проверка что в примере всегда будет true, не вижу в ней смысла. А проверять данные... ну в хидден напр. можно писать мд5 сессии. Если я правильно, опять же, понял требования. Конкретнее напишите, что нужно то.
     
  3. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    любые данные передаваемые со стороны клиента может менять/изменять/модифицировать - это аксиома.
    =>
    значит нужно сделать так, чтобы изменения клиента не позволяли ему обманывать нашу программу и получать то, что мы не планировали, чтобы он получил в обход нашего желания.
    =>
    значит такие данные должны быть зашифрованы и должны быть каждый раз разные, чтобы не возможно было один раз поймав нужное значение подделывать его в последствии.
    для таких целей хорошо подходит mcrypt_encrypt/mcrypt_decrypt
    почитайте:

    http://ru.wikipedia.org/wiki/Криптосистема_с_открытым_ключом
     
    KODEAK нравится это.
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    либо просто создать скрытое поле 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";
    }

     
  5. Fak1r

    Fak1r Постоялец

    Регистр.:
    8 янв 2008
    Сообщения:
    88
    Симпатии:
    18
    Можно еще соль добавить чтобы юзверь сам не сгененрировал контрольную сумму.