Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: печенюшки
 
 автор: NoCash   (15.03.2010 в 09:55)   письмо автору
 
 

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

  Ответить  
 
 автор: psychomc   (15.03.2010 в 10:23)   письмо автору
 
   для: NoCash   (15.03.2010 в 09:55)
 


<?php
// так поставить на первой странице
setcookie("name"$_POST['name'], time()+3600);

// так прочитать на других
?>
<input type="text" name="name" value="<?php if (isset($_COOKIE["name"])) echo $_COOKIE["name"]; ?>"/>

  Ответить  
 
 автор: NoCash   (15.03.2010 в 11:06)   письмо автору
 
   для: psychomc   (15.03.2010 в 10:23)
 

проблемма в том что мне нужно запихнуть вот так вот

$text .=" <input type='text' name='gnl_user'  value='" if (isset($_COOKIE["gnl_user"])) echo $_COOKIE["gnl_user"]"' ></td>";

но в этом случаем ргается на IF

  Ответить  
 
 автор: shah   (15.03.2010 в 12:11)   письмо автору
 
   для: NoCash   (15.03.2010 в 11:06)
 

$text .=" <input type='text' name='gnl_user' value='";
if (isset($_COOKIE["gnl_user"])) $text .= $_COOKIE["gnl_user"];
$text .= "' ></td>";

  Ответить  
 
 автор: NoCash   (15.03.2010 в 12:42)   письмо автору
 
   для: shah   (15.03.2010 в 12:11)
 

все сделал как вы предложили но почему то при повторном заходе на эту стр в поле Name не появилось уже введенное имя пользователя

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 12:32)   письмо автору
 
   для: NoCash   (15.03.2010 в 11:06)
 

Остается придумать себе имя типа: "/><script>window.location('...')</script><br" и бедные пользователи с этого компьютера не попадут на ваш сайт, а попадут на мой.

  Ответить  
 
 автор: NoCash   (15.03.2010 в 12:36)   письмо автору
 
   для: buldovsky   (15.03.2010 в 12:32)
 

т.е это совсем не безопасно делать?

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 12:39)   письмо автору
 
   для: NoCash   (15.03.2010 в 12:36)
 

Так как предложил этот "умник" не безопасно.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 12:43)   письмо автору
 
   для: NoCash   (15.03.2010 в 12:36)
 

всё нормально

  Ответить  
 
 автор: psychomc   (15.03.2010 в 12:41)   письмо автору
 
   для: buldovsky   (15.03.2010 в 12:32)
 

:)))

да вы хэкер. а откуда вы знаете, что имя пользователя будет выводиться не с использованием htmlspecialchars потом скажем в списке пользователей, или на странице пользователя?

при регистрации какой смысл? эту страницу видит ТОЛЬКО ТОТ пользователь, который регистрируется

p.s в тебе речь не шла о безопасности

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 12:48)   письмо автору
 
   для: psychomc   (15.03.2010 в 12:41)
 

В условии написано, что никто регистрироваться не должен

> от такая вот задачка
> незареганный пользоваетль заходит ...


> а откуда вы знаете, что имя пользователя будет выводиться не с использованием htmlspecialchars потом

Судя по тому как оно выведено здесь <input type="text" name="name" value="<?php if (isset($_COOKIE["name"])) echo $_COOKIE["name"]; ?>"/>, как оно будет выведено потом, меня уже мало интересует.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 13:08)   письмо автору
 
   для: buldovsky   (15.03.2010 в 12:48)
 

блядь, вы тупой??????????

незаганый пользователь заходит, вписывает в форму своё имя, жмёт кнопку "Добавить". Данные об объявлении помещаются например в базу. Пользователь идёт на следующую страницу, появляется новая форма добавления, которая читает куки С ЕГО МАШИНЫ и вставляет их в текстовое поле (чтобы пользователю не воводить имя заново). При добавлении объявления НИКТО КРОМЕ ПОЛЬЗОВАТЕЛя НЕ ПОЛУЧАЕТ ДОСТУП К ДАННЫМ В ЕГО КУКАХ.

уже потом из базы при выводе объявлений происходит фильтрация от xss атак

думайте хоть чуть-чуть, прежде чем писать откровенный оленизм

  Ответить  
 
 автор: NoCash   (15.03.2010 в 13:20)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:08)
 

сделал так
setcookie("gnl_user", $_POST['gnl_user'], time()+3600);    

ниже на этой же стр нарисовал
$text .=" <input type='text' name='gnl_user' value='";
if (isset($_COOKIE["gnl_user"])) $text .= $_COOKIE["gnl_user"];
$text .= "' ></td>

добавляю обьявление захожу сного на эту же стр и поле gnl_user совершенно пустое
что то не так сделал??

  Ответить  
 
 автор: psychomc   (15.03.2010 в 13:24)   письмо автору
 
   для: NoCash   (15.03.2010 в 13:20)
 

посмотрите что в html-коде для начала, так же выведите данные из куков не в значение поля, а куда-нибудь в другое место в документе, чтобы проверить записались данные или нет

  Ответить  
 
 автор: NoCash   (15.03.2010 в 13:31)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:24)
 

вывел за пределы формы
 if (isset($_COOKIE["name"])) echo $_COOKIE["name"];

совсем ничего не появляется куки не записываются

  Ответить  
 
 автор: psychomc   (15.03.2010 в 13:34)   письмо автору
 
   для: NoCash   (15.03.2010 в 13:31)
 

а перед записью из формы переданное значение $_POST["name"] не пустое?

  Ответить  
 
 автор: NoCash   (15.03.2010 в 13:46)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:34)
 

я так понимаю значение $_POST["name"] заполняется тогда когда заполняем форму ?

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 13:33)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:08)
 

Судя по всему, тупой - это ты.

Какая база?? Какие пользователи?? Где тебе все это померещилось? Ты пост читал вообще?))
Ты понимаешь что написав echo $_COOKIE["name"] на общедоступной странице сайта, ты позволяешь вставить любой код в страницу?

  Ответить  
 
 автор: psychomc   (15.03.2010 в 13:39)   письмо автору
 
   для: buldovsky   (15.03.2010 в 13:33)
 

на какой общедоступной странице?)))

откуда будут браться объявления на странице вместе с текстом и именем человека, разместившего его на странице сайта???? из куков????? ты болен, чел
ты можешь понять, что куки здесь нужны только для удобства человека, который добавляет это объявление, ТОЛЬКО ДЛЯ ТОГО ЧТОБЫ ЕМУ НЕ ВВОДИТЬ СВОЁ ИМЯ НЕСКОЛЬКО РАЗ, НА СТРАНИЦЕ, НА КОТОРОЙ ЗНАЧЕНИЯ ПОЛЕЙ ИЗ ЕГО КУКОВ НЕ ВИДИТ НИКТО

p.s ты хоть раз хоть что-нибудь разрабатывал сам чтобы вникнуть для чего что нужно вообще?

  Ответить  
 
 автор: NoCash   (15.03.2010 в 13:49)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:39)
 

я так понимаю значение $_POST["name"] заполняется тогда когда заполняем форму ?

  Ответить  
 
 автор: psychomc   (15.03.2010 в 13:52)   письмо автору
 
   для: NoCash   (15.03.2010 в 13:49)
 

когда отправляем заполненную форму (в которой есть поле с именем name)

  Ответить  
 
 автор: NoCash   (15.03.2010 в 13:52)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:52)
 

да оно заполненно имя в базе сохраняется а вот выводиться через куки не хочет

  Ответить  
 
 автор: psychomc   (15.03.2010 в 15:05)   письмо автору
 
   для: NoCash   (15.03.2010 в 13:52)
 

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

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 14:04)   письмо автору
 
   для: psychomc   (15.03.2010 в 13:52)
 

запусти этот код


<?php

$_COOKIE
["name"] = "myname\"/><script>alert('Я мудак');window.location.href='http://google.ru'</script><br attr=\"attr";

echo 
"
<p>Форма добавления объявления</p>
<form>
 Ваше имя:<input name=\"name\" value=\""
.$_COOKIE["name"]."\" />
</form>"
;

?>


потом запути этот код


<?php

$_COOKIE
["name"] = "myname\"/><script>alert('Я мудак');window.location.href='http://google.ru'</script><br attr=\"attr";

echo 
"
<p>Форма добавления объявления</p>
<form>
 Ваше имя:<input name=\"name\" value=\""
.htmlspecialchars($_COOKIE["name"])."\" />
</form>"
;

?>

  Ответить  
 
 автор: psychomc   (15.03.2010 в 14:09)   письмо автору
 
   для: buldovsky   (15.03.2010 в 14:04)
 

ага, то есть вы учитываете даже такой момент, что пользователь, КОТОРОМУ НАДО ДОБАВИТЬ ОБЪЯВЛЕНИЕ, БУДЕТ СПЕЦИАЛЬНО ВМЕСТО СВОЕГО ИМЕНИ ПИСАТЬ КОД JAVSCRIPT ЧТОБЫ СЕБЯ ОТПРАВИТЬ НАПРИМЕР НА ГУГЛ ??

какая все-таки у вас глубина мысли........

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 14:18)   письмо автору
 
   для: psychomc   (15.03.2010 в 14:09)
 

Какой же ты все-таки тупой!!!
Столько времени на тебя потратил, а ты дурак так ничего и не понял! Иди читай что такое СOOKIES, а не советуй людям бред...

  Ответить  
 
 автор: psychomc   (15.03.2010 в 15:02)   письмо автору
 
   для: buldovsky   (15.03.2010 в 14:18)
 

Куки (слово не склоняется; от англ. cookie — печенье) — небольшой фрагмент данных, созданный веб-сервером и хранимый на компьютере пользователя в виде файла, который веб-клиент (обычно веб-браузер) каждый раз пересылает веб-серверу в HTTP-запросе при попытке открыть страницу соответствующего сайта. Применяется для сохранения данных на стороне пользователя, на практике обычно используется для:

* аутентификации пользователя;
* хранения персональных предпочтений и настроек пользователя;
* отслеживания состояния сессии доступа пользователя;
* ведения статистики о пользователях.


специально для тебя идиота выделил
ты всем пользователям свои персональные настройки всегда показываешь?
другие пользователи видят, что хранится у тебя в куках, когда проходишь аутентификацию например на этом сайте?


Межсайтовый скриптинг или XSS (аббр. от англ. Cross Site Scripting) — тип уязвимостей, обычно обнаруживаемых в веб-приложениях, которые позволяют внедрять код злонамеренным пользователям в веб-страницы, просматриваемые другими пользователями. Примерами такого кода являются HTML-код и скрипты, выполняющиеся на стороне клиента, чаще всего JavaScript.


где у нас будет просмотр другими пользователями?

  Ответить  
 
 автор: sim5   (15.03.2010 в 15:19)   письмо автору
 
   для: psychomc   (15.03.2010 в 15:02)
 

Сходите лучше на www.xakep.ru, ей богу вам полезнее это будет.

  Ответить  
 
 автор: NoCash   (15.03.2010 в 15:30)   письмо автору
 
   для: sim5   (15.03.2010 в 15:19)
 

народ хорош тут выяснять кто круче знает что такое куки, вы мне помогите реализовать то что задуманно

  Ответить  
 
 автор: sim5   (15.03.2010 в 15:33)   письмо автору
 
   для: NoCash   (15.03.2010 в 15:30)
 

Ну а вам нужно просто почитать как работает механизм cookies, будете знать, значит реализуете.

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 16:31)   письмо автору
 
   для: psychomc   (15.03.2010 в 15:02)
 

Надо быть полным кретином, чтобы пол дня с пеной у рта, оскорблениями, насмешками и иронией учить людей на форуме тому, в чем не знаешь элементарных основ!?

Ты наверное считаешь себя очень "умным" и "самоуверенным" человеком? Думаю для тебя будет тяжело осознать, что это не так.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 16:42)   письмо автору
 
   для: buldovsky   (15.03.2010 в 16:31)
 

а ты, наверное, слепо веришь форуму, и не думая лепишь где только можно ненужные в данном контексте функции
расскажи мне где здесь уязвимость, о великий (именно от начала до конца, не надо рисовать формы, я же хочу понять зачем ты столько времени потратил)

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 17:11)   письмо автору
 
   для: psychomc   (15.03.2010 в 16:42)
 

Смотри.

Ты зашел, в интернет кафе, чтобы разместить объявление на сайте avito.ru например
Входишь на главную страницу, нажимаешь "добавить объявление".
Но вместо того, чтобы увидеть форму для заполнения объявления, ты почему-то оказываешься на вредоносном сайте? Угадай почему? Потому что, до тебя на этом сайте (с этого компьютера) побывал другой умник со странным именем "\"/><script>window.location.href='...&cookie='+document.cookies</script>...". Если ты еще и зарегистрировался на этом сайте то он получит твой SID, следовательно сможет войти под твоим именем и т.д.

Основное правило web-программирования - не верить тому, что тебе прислал клиент ($_POST, $_GET, $_COOKIE)

Теперь я могу расчитывать на то, что потратил столько времени не зря?)

  Ответить  
 
 автор: psychomc   (15.03.2010 в 17:20)   письмо автору
 
   для: buldovsky   (15.03.2010 в 17:11)
 

в этом случае да, переадресация будет, в принципе правильно, но случай довольно необычный, и
document.cookies, по идее, отдаст содержимое куков только для этого сайта. что мы здесь потеряем?

  Ответить  
 
 автор: oliss   (15.03.2010 в 17:56)   письмо автору
 
   для: psychomc   (15.03.2010 в 17:20)
 

ВСЕ входящие данные надо фильтровать и инициализировать ВСЕ переменные.
Для NoCash, упрощённо :
<?
$cooc
=!empty($_COOKIE['gnl_user'])) ? $_COOKIE['gnl_user'] : NULL;
value="<?php echo htmlspecialchars($cooc) ; ?>" >

про get_magic_quotes_gpc() не забывайте.

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 17:58)   письмо автору
 
   для: psychomc   (15.03.2010 в 17:20)
 

> что мы здесь потеряем?

Ну девственность ты там конечно не потеряешь, но порнухи насмотришься - это в лучшем случае.

А я бы просто незаметно переадресовал тебя на свою страничку (точную копию той на которую ты должен был попасть) и предложил бы вместе с добавлением объявления ввести и свой пароль и email, чтобы был.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 18:40)   письмо автору
 
   для: buldovsky   (15.03.2010 в 17:58)
 

ну незаметно вряд ли бы получилось
доводы убедительные, хотя частный случай, и по-моему, уязвимость не критичная, хотя для хакеров-задротов пойдёт :)

p.s беру оскорбительные слова обратно

  Ответить  
 
 автор: Рома   (15.03.2010 в 18:34)   письмо автору
 
   для: buldovsky   (15.03.2010 в 17:11)
 

>Смотри.
>
>Ты зашел, в интернет кафе, чтобы разместить объявление на сайте avito.ru например
>Входишь на главную страницу, нажимаешь "добавить объявление".
>Но вместо того, чтобы увидеть форму для заполнения объявления, ты почему-то оказываешься на вредоносном сайте? Угадай почему? Потому что, до тебя на этом сайте (с этого компьютера) побывал другой умник со странным именем "\"/><script>window.location.href='...&cookie='+document.cookies</script>...". Если ты еще и зарегистрировался на этом сайте то он получит твой SID, следовательно сможет войти под твоим именем и т.д.
>
>Основное правило web-программирования - не верить тому, что тебе прислал клиент ($_POST, $_GET, $_COOKIE)
>
>Теперь я могу расчитывать на то, что потратил столько времени не зря?)


Если ваша кука исполняет вредоносный код, то только вам хуже, а другим пользователям она навредить не может, так как содержится именно у вас на компьютере и ее исполнение может произойти только в вашем браузере. Хотя я, даже ради прикола не оставлял бы такую возможность.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 18:42)   письмо автору
 
   для: Рома   (15.03.2010 в 18:34)
 

>Если ваша кука исполняет вредоносный код, то только вам хуже, а другим пользователям она навредить не может, так как содержится именно у вас на компьютере и ее исполнение может произойти только в вашем браузере. Хотя я, даже ради прикола не оставлял бы такую возможность.

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

  Ответить  
 
 автор: Рома   (15.03.2010 в 18:48)   письмо автору
 
   для: psychomc   (15.03.2010 в 18:42)
 

толковая мысль ;)

  Ответить  
 
 автор: NoCash   (15.03.2010 в 19:02)   письмо автору
 
   для: Рома   (15.03.2010 в 18:48)
 

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

  Ответить  
 
 автор: buldovsky   (15.03.2010 в 19:06)   письмо автору
 
   для: NoCash   (15.03.2010 в 19:02)
 

У вас в браузере кукисы вообще включены?)))

  Ответить  
 
 автор: NoCash   (15.03.2010 в 19:09)   письмо автору
 
   для: buldovsky   (15.03.2010 в 19:06)
 

да конечно

  Ответить  
 
 автор: Рома   (15.03.2010 в 19:15)   письмо автору
 
   для: NoCash   (15.03.2010 в 19:02)
 

так а че у вас за сайт такой, что куки не ставятся? у всех ставятся, а у вас почему то нет.

  Ответить  
 
 автор: NoCash   (15.03.2010 в 19:23)   письмо автору
 
   для: Рома   (15.03.2010 в 19:15)
 

пишу вот что
setcookie("gnl_user", $_POST['gnl_user'], time()+3600);    


в форме пишу
$text .=" <input type='text' name='gnl_user' value='";
if (isset($_COOKIE["gnl_user"])) $text .= $_COOKIE["gnl_user"];
$text .= "' ></td>

обьявления прекрасно добовляется так же добовляется имя юзра в БД но куки не выыводятся
возможно это из за записи
if (USER==FALSE) ($gnl_user =$_POST['gnl_user']    );

но если ее убрать то имя в базу не заноситься

  Ответить  
 
 автор: oliss   (15.03.2010 в 19:28)   письмо автору
 
   для: NoCash   (15.03.2010 в 19:23)
 

print_r($_COOKIE); что даёт?

  Ответить  
 
 автор: NoCash   (15.03.2010 в 19:31)   письмо автору
 
   для: oliss   (15.03.2010 в 19:28)
 

Array ( [PHPSESSID] => 660f08792598f9d1342a79dd246f59a0 [logintheme] => cpanel [cprelogin] => no [cpsession] => closed [e107_tdOffset] => 4 [e107_tdSetTime] => 1268670619 [e107_tzOffset] => -300 [24NET_SM_GUEST_ID] => 229072 [24NET_SM_LAST_VISIT] => 12.03.2010 08:33:50 )
вот такая чтука вылезла

  Ответить  
 
 автор: oliss   (15.03.2010 в 19:33)   письмо автору
 
   для: NoCash   (15.03.2010 в 19:31)
 

(USER==FALSE)

USER это константа?
Ну куки у вас пишутся нормально ,не работает конструкция
setcookie("gnl_user", $_POST['gnl_user'], time()+3600); 

  Ответить  
 
 автор: NoCash   (15.03.2010 в 19:37)   письмо автору
 
   для: oliss   (15.03.2010 в 19:33)
 

эт глабальная переменная если фэлс то бзер незареган если тру то зареган

  Ответить  
 
 автор: oliss   (15.03.2010 в 19:42)   письмо автору
 
   для: NoCash   (15.03.2010 в 19:37)
 

Так переменная или константа,если переменная то определите её как переменную $

  Ответить  
 
 автор: sim5   (15.03.2010 в 19:43)   письмо автору
 
   для: psychomc   (15.03.2010 в 18:42)
 

Зачем мне другие пользователи? Ведь "чужим" как раз могу быть сам я.

  Ответить  
 
 автор: psychomc   (15.03.2010 в 23:41)   письмо автору
 
   для: sim5   (15.03.2010 в 19:43)
 

интересно.
каким образом?

  Ответить  
 
 автор: sim5   (16.03.2010 в 06:47)   письмо автору
 
   для: psychomc   (15.03.2010 в 23:41)
 

Вы когда либо воровали яблоки в чужом саду? Если да, то в первую очередь искали дыру в заборе, а дальше... Вот наличие дыр в заборе мне и нужно, а уж каким образом, это уже второй вопрос.
Сходите туда, куда я вас послал.

  Ответить  
 
 автор: psychomc   (16.03.2010 в 10:09)   письмо автору
 
   для: sim5   (16.03.2010 в 06:47)
 

был там, читал про xss (http://forum.xakep.ru/m_1298634/tm.htm). не впечатлило :)
хотя врага нужно знать в лицо, поэтому все-равно полезно :)

  Ответить  
 
 автор: sim5   (16.03.2010 в 10:23)   письмо автору
 
   для: psychomc   (16.03.2010 в 10:09)
 

Ломают не для впечатлений, а с конкретными целями. А чтобы не оставлять дыр в заборе и нужно знать идеологию вора.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования