Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: интернет корзина

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите пожалуйста, разобраться с интернет корзиной
vanicon
Отправлено: 24 Мая, 2010 - 19:42:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Читал статьи на форуме про создание интернет корзины, и все никак не могу понять как лучше сделать. Мне нужно сделать такую корзину, которая бы смогла запомнить общую стоимость товаров и их количество. И сразу пришла в голову мысль реализовать все это через cookie, к примеру запись id товара, его количество. Но в этом варианте есть свои недостатки:
1. Если пользователь купит товаров 100 - 200 (что мало вероятно Улыбка ) то файл cookie просто не выдержит.
2. Второй недостаток это кража cookie, или их подмена. Конечно даже если хакер украдет cookie то самое страшное что он сможет сделать это оплатить все покупки Радость , но все же это недостаток.

И второй вариант:
Когда пользователь нажмет на кнопку купить, то ему в cookie запишется уникальный логин или типа того... А после запишется в БД его с генерированный логин и вместе с ним id и количество товара. Но и в этом варианте тоже свои недостаток:
1. Это опять же кража (cookie) этого с генерированного логина.

Какой бы вариант не выбрать везде нужно шифровать данные в куках на основе ip адреса пользователя.
Помогите выбрать более эффективный и безопасный способ, и устранить их недостатки.


-----
Так было, так есть и так будет
 
 Top
alexspb
Отправлено: 24 Мая, 2010 - 22:10:26
Post Id


Посетитель


Покинул форум
Сообщений всего: 260
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




в куки пишется сессия (идентификатор), все остальное - в переменные сессии (или сохраняется в базу по идентификатору)


-----
Хостинг - неограниченно доменов на одну папку
Ajax - отличное введение
 
 Top
JustUserR
Отправлено: 25 Мая, 2010 - 11:28:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
Второй недостаток это кража cookie, или их подмена. Конечно даже если хакер украдет cookie то самое страшное что он сможет сделать это оплатить все покупки , но все же это недостаток.
Случай с интернет-корзиной особенен тем что в нем впринципе нестрашна кража и подмена cookie - однако если вы хотите сделать улучшенную защиту то можно поступить следуюим образом Самый надежный способ это регистрация пользователя и привязка корзины в пользователю по опделеленному полю в БД - при этом в cookie для надежности хранятся захешированные и для защиты от их кражи делается следующее - указание дополнительно IP-адреса и версии браузера посетителя и ограничение времени использования cookie - в таком случае ее можно будет использовать только на браузере в котором произошла авторазиция


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 25 Мая, 2010 - 20:27:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Если я правильно понял что написал alexspb то логика примерно такая:
Если пользователь нажмет на кнопку купить, то запишется в базу данных: идентификатор сессии (это типа логин пользователя), id товара и его количество.
Также я изменил настройки в php.ini на то чтобы сессия хранилась дня 3.
И если потом пользователь зайдет с этим идентификатором в куках в магазин, и идентификатор в куках совпадет с идентификатором в базе данных то заносим в сессию количество его товаров из базы данных.
Если что непонятно я объясню по подробней.


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 27 Мая, 2010 - 13:31:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
Если пользователь нажмет на кнопку купить, то запишется в базу данных: идентификатор сессии (это типа логин пользователя), id товара и его количество.
Также я изменил настройки в php.ini на то чтобы сессия хранилась дня 3.
Установка достаточно длительного срока жизни cookie которая обеспечивает работу определенной сессии может привести как раз к тому что cookie будет более легко украдена и использована - но согласно вашему первому сообщению как раз этот недостаток вас и не устраивает Поэтому если вы хотите обеспечить длительное хранение корзины то это можно сделать с помощью специальной таблицы в БД - которая будет связана с уникальным идентификатором пользователя JOIN-запросом Но при этом время жизни авторизационной сессии должно быть минимальным - и для обеспечения большей безопасности содержать параметры указаные в предыдущем сообщении


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 27 Мая, 2010 - 23:53:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Цитата:
Самый надежный способ это регистрация пользователя и привязка корзины в пользователю по опделеленному полю в БД

Все же мне хотелось чтобы корзина запоминала данные и без регистрации пользователя, есть ли другой способ защититься от кражи cookie, кроме как регистрация ?
И еще один вопрос, какой php функцией можно сгенерировать уникальный логин пользователя?


-----
Так было, так есть и так будет
 
 Top
alexspb
Отправлено: 28 Мая, 2010 - 08:43:09
Post Id


Посетитель


Покинул форум
Сообщений всего: 260
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




vanicon пишет:
есть ли другой способ защититься от кражи cookie, кроме как регистрация

вам же подсказали решение
JustUserR пишет:
в cookie для надежности хранятся захешированные и для защиты от их кражи делается следующее - указание дополнительно IP-адреса и версии браузера посетителя и ограничение времени использования cookie - в таком случае ее можно будет использовать только на браузере в котором произошла авторазиция


-----
Хостинг - неограниченно доменов на одну папку
Ajax - отличное введение
 
 Top
JustUserR
Отправлено: 28 Мая, 2010 - 14:40:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
И еще один вопрос, какой php функцией можно сгенерировать уникальный логин пользователя?
Для этих целей можно использовать функцию http://php.su/functions/?uniqid которая позволяет генерировать случайные 32-символьные идентификаторы а также имеет ваозможность указания определенного префикса с ним
Что касается другого вашего вопроса то для него уже было указано решение


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vanicon
Отправлено: 31 Мая, 2010 - 00:45:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Цитата:
указание дополнительно IP-адреса и версии браузера посетителя и ограничение времени использования cookie - в таком случае ее можно будет использовать только на браузере в котором произошла авторизация.

Насчет того как защититься от подмены cookies это я понял, а вот от кражи cookis не могу понять.
Если я правильно вас понял, то вы предлагаете записывать в базу кроме с генерированного логина, еще и ip пользователя и его браузер в отдельные поля, и если при последующем входе ip, браузер и логин совпадет с теми данными которые в Базе данных то это тот самый пользователь. Но вот у меня возникает вопрос как записывать ip покупателя, если у него к примеру динамический ip?


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 31 Мая, 2010 - 01:59:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
Насчет того как защититься от подмены cookies это я понял, а вот от кражи cookis не могу понять.
Если я правильно вас понял, то вы предлагаете записывать в базу кроме с генерированного логина, еще и ip пользователя и его браузер в отдельные поля, и если при последующем входе ip, браузер и логин совпадет с теми данными которые в Базе данных то это тот самый пользователь. Но вот у меня возникает вопрос как записывать ip покупателя, если у него к примеру динамический ip?
Здесь вся суть безопасности авторизации заключается как раз в том что любая авторизационная сессия не должна иметь длительный период - поскольку любой пароль можно взломать а хеш-код редуцировать главное подобрать такой срок его действия в течение которого такой взлом очень маловероятен Конкретно с корзиной предполагается сделать так - на сайте вводится регистрация и долговременная корзина связана с конкретным пользователем из БД и никак не зависит от его текущей авторизационной сессии Что касается самой авторизации то ситуация достаточно простая - сессия будет работать только до сменой пользователем IP-адреса и только в течение недлительного периода - причем чем больше захешированных данных явно идентифицирующих пользователя хранится вместе с текущей авторизационной сессией тем лучше защита
Если вам нужно еще более сильная защита то можете использовать ActiveX-элементы и заместо IP-адреса пользователя использовать tracert до web-сервера - а на случай если кто-то из подсети вашего провайдера решит подменить IP-адрес то можно включть также MAC-адрес интерфейса WAN-соединения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB