|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
Безопасность связки PHP+AJAX02.06.2016, 13:11. Показов 2445. Ответов 14
Здравствуйте, коллеги,
Написал движок на PHP, теперь думаю как сделать так чтобы не повадно было ломать его всякой школоте. Вот в чем вопрос конкретно: Есть модуль js, который отправляет GET-запросы в ajax.php (проставление лайков, быстрый поиск и т.д.). Цель - сделать этот запрос уникальным, чтобы нельзя было его выполнить дважды или выполнить отложенно. Или сделать его таким, чтобы от одного вида тошнило и хотелось забыть как страшный сон, не то, что лезть туда. Не хочется изобретать велосипеды (наизобретался уже), подскажите, как это делается грамотно.
0
|
|
| 02.06.2016, 13:11 | |
|
Ответы с готовыми решениями:
14
Безопасность php and ajax Установка связки Apache MySQL и PHP под Windows 7 Через ajax в url:'ajax.php', нужно передать одну переменную, и значение radio кнопки |
|
104 / 88 / 21
Регистрация: 19.05.2012
Сообщений: 458
|
|
| 02.06.2016, 13:47 | |
|
А чем отправка из обычной формы отличается от отправки Ajax'ом?
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
| 02.06.2016, 13:51 | |
|
На стороне сервера проверяете доступ к соответствующим действиям и если его нет, то возвращаете ошибку.
0
|
|
|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
| 02.06.2016, 14:00 [ТС] | |
|
На формах висит captcha, поэтому неактуально. А вот запросы из js выдают всё с потрохами.
Добавлено через 6 минут tarasalk, допустим, зарегистрированный пользователь может ставить лайки ($_SESSION['level'] = 'REG'). Чел регистрируется, видит что при лайке летит запрос ?do=like&hash=d5v76fv5g7sdfv (hash - id лайкаемого объекта). Проходится по странице, собирает все хэши и циклом лайкает всё из curl, предварительно подсунув куки для авторизации. А если на странице установить сессионную переменную, то это отлично ломается предварительным открытием страницы из curl. Кроме того, он может выполнить ?do=like&hash=d5v76fv5g7sdfv в другом окне браузера, и всё сработает. Что не есть правильно.
0
|
|
|
104 / 88 / 21
Регистрация: 19.05.2012
Сообщений: 458
|
|
| 02.06.2016, 14:05 | |
|
AVR55, Без регистрации и ограничения на 1 лайк одному посту одним пользователем, вы это не ограничите.
Все проверки на ip и прочее вам ведь ничем не поможет.
0
|
|
|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
| 02.06.2016, 14:29 [ТС] | |
|
Доктор Зойдберг, в том-то и дело...
А если так. 1) при загрузке страницы формируется md5(time()) и сохраняется как $_SESSION['page_key']. 2) на стороне js перед отправкой GET-запроса выполняем запрос к php-скрипту a.php, куда передаем hash=d5v76fv5g7sdfv. Тот выполняет ещё один md5(time()), сохраняет как $_SESSION['moment_key'], и этим ключом шифрует переданный хэш через mcrypt_encrypt. Результат отдает обратно. 3) с шифром идем в наш ajax.php. Там - во-первых, проверяется isset($_SESSION['page_key']). Во-вторых, проверяется isset($_SESSION['moment_key']) и разница между текущим временем и $_SESSION['moment_key']. Если больше 1 секунды - отказ. Ну и в-третьих, дешифруется строка и обрабатывается дальше. Главная проблема этого метода - запросы к a.php приходится либо делать синхронными (что deprecated), либо следующий запрос к ajax.php вешать внутри на success. А это будет очень громоздко. Вот и думаю... Должна быть какая-то ещё технология защиты. Иначе взлом вкнотактика был бы по силам студентам.
0
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 02.06.2016, 14:45 | |
|
Кросдоменные запросы. Есть такая штука. Если отправляется ajax с другого домена, отличного от сайта, то он даже не дойдет до сервера, обрубится. Это защита такая, встроенная в javascript.
И я бы все ajax запросы посылал только методом POST а не GET. Ну и защитится полностью невозможно. Попытайтесь доработать скрипт. Попытайтесь выследить "лайкеров". Если видете, что за последнюю минуту было отправлено слишком много лайков, то завершайте работу скрипта или отправляйте в ответку капчу
1
|
|
|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
| 02.06.2016, 14:53 [ТС] | |
|
Типа, чем городить этот колхоз, лучше сделать анализатор поведения в целевом скрипте. Ок, наверное, пойду по этому пути.
А насчет кроссдоменных запросов не совсем понял. В случае с ajax запрос летит от пользовательской машины или в пределах сервера?
0
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 02.06.2016, 15:30 | |
|
На счет кросдоменных запросов: Ajax в любом случае летит с пользовательской машины, так как весь js выполняется на клиенте (в браузере). Перед отправкой запроса браузер проверяет доменное имя, с которого был получен данный скрипт, и доменное имя, на которое отправляется запрос. Если они отличаются, то браузер тупо не отправляет запрос.
Но тут думаю проблема безопасности даже не в связке PHP+AJAX, и даже не просто в AJAX, так как ничто не мешает пользователю открыть сотню вкладок в браузере и послать сотню GET запросов. Тут нужно ограничиваться на сервере. Во-первых, такие запросы должны быть только POST. Во-вторых нужно отслеживать и блокировать лайкеров. Например, даже на этом форуме есть защита от "Спасибкеров". Я не могу нажать "Спасибо" два раза подряд. Нужно подождать какое-то время.
1
|
|
|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
| 02.06.2016, 16:04 [ТС] | |
|
Почему именно POSTом?
0
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 02.06.2016, 16:37 | |
|
Ну как минимум для того, чтобы нельзя было послать запрос с браузера просто введя url в строку адреса
0
|
|
|
1 / 1 / 0
Регистрация: 08.06.2015
Сообщений: 10
|
|
| 02.06.2016, 16:44 [ТС] | |
|
Ну это препятствие разве что для совсем чайников.
Для пользоватля curl что гет, что пост - одного порядка задачи. Нет?
0
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 02.06.2016, 16:58 | |
|
Вот для curl как раз защита на стороне сервера. Слишком много лайков с одного адреса - блокировать или отправлять капчу.
Но и это может не спасти, если curl будет работать через кучу прокси серверов. Их, правда, еще нужно насобирать и вовремя обновлять. А это уже задача посложнее.
0
|
|
|
Software Engineer
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 983
|
|
| 02.06.2016, 19:42 | |
|
0
|
|
|
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
|
|
| 02.06.2016, 22:46 | |
|
при клике на "лайк-ссылку" получаем в ответ новые значения ссылок и меняем их все на странице
![]() как идея?
0
|
|
| 02.06.2016, 22:46 | |
|
Помогаю со студенческими работами здесь
15
PHP и безопасность Безопасность в php Безопасность сессии PHP Безопасность PHP приложения.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|