[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как посоветуете реализовать защиту?
Pyroman
Имеется PHP скрипт магазина, который посредством ajax отсылает данные другому PHP скрипту. Проблема в том, что используя, например, Charles, можно легко изменить запрос и купить любой товар за 0 рублей или купить неограниченное количество товара за цену одного. Как можно наилучшим способом защитить скрипт от подобных проблем? Спасибо.



Спустя 21 минута, 11 секунд (27.05.2012 - 14:18) killer8080 написал(а):
Pyroman
потому что нельзя полагаться на пользовательские данные. От клиента должен приходить запрос на покупку с id товара и количеством единиц, а расчет стоимости должен производится на серверной стороне.

Спустя 20 минут, 6 секунд (27.05.2012 - 14:38) Pyroman написал(а):
А как поступить с именем пользователя? В теории, имя пользователя могут подменить и купить от его имени за его счёт то, что ему совсем не нужно.

Спустя 3 минуты, 24 секунды (27.05.2012 - 14:42) killer8080 написал(а):
А авторизацию для чего придумали wink.gif

Спустя 48 секунд (27.05.2012 - 14:43) Invis1ble написал(а):
Чтоб заставлять юзверей вводить многа букафф biggrin.gif

Спустя 12 минут, 24 секунды (27.05.2012 - 14:55) Pyroman написал(а):
Если получать имя пользователя через (в моём движке) $member_id['name'];
то происходит следующая ситуация:
Предположим, файл 1.php отправляет запрос, а 2.php его принимает.
Из файла 1.php отправляется запрос через ajax с ID товара и количеством, но если в файле 2.php указать в качестве имени пользователя "$member_id['name'];", то возвращается цифра, но если отправлять запрос стандартными средствами PHP (if(isset($_POST['blablabla']))), то имя пользователя нормально определяется, что странно.

Спустя 14 минут, 24 секунды (27.05.2012 - 15:09) killer8080 написал(а):
сессии нужно использовать

Спустя 5 минут, 34 секунды (27.05.2012 - 15:15) Pyroman написал(а):
killer8080, не расскажешь поподробнее?

Спустя 44 минуты, 43 секунды (27.05.2012 - 16:00) inpost написал(а):
Корзина представляет из себя:
товар и его количество.
Пиво = 7
Водка = 8

Скрипт должен проверять, если есть хотя бы один товар с количеством > 0, то осуществлять покупку.

Цена? Цена считается уже во время оформления товара, а цена товара хранится в БД(!!!).
Мы берём из БД цену за пиво и умножаем на количество, которое указал человек. Ты никогда не видел бланков заказа? Там всего 2 строчки: товар и количество, а цена указывается зарание.

Спустя 7 минут, 4 секунды (27.05.2012 - 16:07) sebastjan написал(а):
Да плюс ко всему сказанному стоит добавить - что работу с заказом ещё адменистратор и через всякие скрипты администрации проверяют.
Имеет ли покупатель какие то бонусы, скидки, штрафные санкции, соответствие заказ==цена.
Ни кто не пологатся чисто на программу, всегда проверка.


Спустя 30 минут (27.05.2012 - 16:37) Pyroman написал(а):
Да, но почему вместо имени пользователя при использовании "$member_id['name'];" выводится цифра 1 (как я понял - мой ID), но если данные передавать не через AJAX, то всё нормально.

Спустя 32 минуты, 8 секунд (27.05.2012 - 17:09) inpost написал(а):
Pyroman
Как ты написал код, то и передаётся.

Спустя 18 минут, 35 секунд (27.05.2012 - 17:28) Pyroman написал(а):
inpost, "$member_id['name']" определено самим движком DLE.

Спустя 18 минут, 7 секунд (27.05.2012 - 17:46) RCuPeR написал(а):
Распечатай $member_id (print_r($member_id)wink.gif и посмотри какой элемент массива содержит имя юзверя.

Спустя 53 минуты, 45 секунд (27.05.2012 - 18:39) inpost написал(а):
Pyroman
такого не бывает! Ты определяешь через движок, при этом движок твой, вне зависимости от того, какое у него название. Ты должен разбираться в переменных и понимать, что какая из них делает. Как тебе посоветовали выше - проверяй переменные, смотри информацию, которая хранится в них, и если в движке какой-то модуль фигово сделан - переписывай под себя.

Спустя 2 часа, 19 минут, 52 секунды (27.05.2012 - 20:59) bodja написал(а):
Pyroman
А что сайт авоматом товар отправляет на почте. biggrin.gif
Менеджер или собственная голова для чего? wink.gif
Внутреннюю платежную систему на сайте вообще не рекомендую вводить,от хакеров не отмашитесь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.