Мучился сегодня, подделывал. Дело в том, что у меня скрипт проходит по форме (моей) и собирает атрибуты с input`ов (моих). Затем сохраняет в сессию вроде array(тип проверки, много букв, если проверка не прошла). И на последних строках скрипта стоит $_SESSION['check'] = 1. Вообщем, проверка POST`а будет только если этот check в сессии есть (типа страница один раз была загружена и значит если у инпутов были чекеры они пропарсились), в свою очередь сам POST пройдёт только если пройден чекер из отпарсеных инпутов. В php коде дублей проверки (набором if`ов или ещё как) нет (и без $_SESSION['check'] слалось бы всё легко и просто). Пытался всячески послать POST с других серверов (через fsockopen()). Ничего не прошло. Алилуя. Пытался подделать куку и сунуть в неё id сессии. Не прошло... В общем, пытался всяко как в голову приходило и ничего не прошло. Как сессию подделать/подставить или это обойти? P.S. Это в целях проверки своего скрипта и заделки дыр.
Elkaz По-умолчанию включены оба варианта, при чем редко когда это умолчание кто-либо изменяет. lexa "Обмануть" сервер передачей ID сессии можно, но сколь-мало защищенная система проверяет как минимум IP-адрес.
Примерный код. Форма: HTML: <form method="post" action="на саму себя"> <input name="myname" value="Эрл" /><br /> <input name="karma" check-this="Проверь карму!" /><br /> <input type="submit" value="Отправить" /> </form> PHP: PHP: <?php if ($_SESSION['check'] and $_POST and $_SESSION['form_checker']) foreach ($_SESSION['form_checker'] as $checker) //$checker[0] содержит значение атирибута name (karma в приере). $checker[1] - значение атрибута check-this ("Проверь карму!" в примере). // Код проверок. // Если проверка прошла удачно, то всё что в $_POST пишем в базу. // Если нет, то ничего не пишем, а делаем echo $checker[1]. // Всякий иной код. $_SESSION['check'] = true; // Ниже ничего нет. ?>