Понедельник, 11 Ноября 2024, 12:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Безопастность
DreamOffДата: Воскресенье, 15 Сентября 2013, 20:27 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте друзья.
Столкнулся с такой проблемой :
в моем проекте в при авторизации скрипт регистрирует сессию и выполняет header("Location: main.php");
main.php у меня начинается со ледующих строк

Код

<?php
DEFINE("_GAMEEVF",1);
.....

?>


во всех файлах идет в первую очередь проверка

Код

<?php
defined( '_GAMEEVF' ) or die( 'Прямой вызов запрещен !' );
?>


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

Но в один перкрасный момент мне понадобилось воспользоваться AJAX и тут возникла проблема , скрипты подгружаемые ajax не видят существующую константу и сразу завершаются.
каким образом можно обойти эту неприятную особенность ? Как мне передать константу скрипту использующую ajax чтобы ajax невозможно было выполнить напрямую.
lvovandДата: Воскресенье, 15 Сентября 2013, 20:30 | Сообщение # 2
старожил
Сейчас нет на сайте
в аяксовом скрипте вызови вначале
session_start()
и скрипт будет также работать с переменными, хранящимися в сессии


Разработка и продвижение сайтов. Дизайн
DreamOffДата: Воскресенье, 15 Сентября 2013, 20:32 | Сообщение # 3
был не раз
Сейчас нет на сайте
дело не в сессии ! мне надо отказать в прямом вызове скрипта .
lvovandДата: Воскресенье, 15 Сентября 2013, 20:57 | Сообщение # 4
старожил
Сейчас нет на сайте
запутал, если честно

Цитата (DreamOff)
скрипты подгружаемые ajax не видят существующую константу и сразу завершаются.

вынеси определение константы в отдельный файл и подключай его в аяксовых скриптах

Цитата (DreamOff)
мне надо отказать в прямом вызове скрипта

можно проверять HTTP_REFERER, но это не панацея, так как заголовок передается браузером и его подделать можно, а создавая переменную при авторизации и сохраняя ее в куках или в сессии, можешь ее проверять в любом скрипте


Разработка и продвижение сайтов. Дизайн
DreamOffДата: Воскресенье, 15 Сентября 2013, 21:04 | Сообщение # 5
был не раз
Сейчас нет на сайте
Распутываю :))
Есть 2 скрипта (один грузится во второй ajaxом)

в головном создается константа
во втором проверяется её существование.
во втором проверка всегда приводит к провалу так как грузясь ajax скрипту не передается константа .

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

в сессии и куках хранить уже ближе к разгадке , но есть тут один минус , ничего не мешает клиенту авторизироваться (тем самым зарегистрировать сессию или куки) и после этого гулять по файлам вызывая их напрямую .
lvovandДата: Воскресенье, 15 Сентября 2013, 21:51 | Сообщение # 6
старожил
Сейчас нет на сайте
проверяй REFERER, он скажет из какого файла был вызов скрипта, но повторюсь, что не панацея, так как подделать можно

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

Добавлено (15.09.2013, 21:51)
---------------------------------------------
чем так уж прямо напугали прямые вызовы скриптов (про аяксовые скрипты если что вопрос)?


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Воскресенье, 15 Сентября 2013, 21:55
DreamOffДата: Воскресенье, 15 Сентября 2013, 22:32 | Сообщение # 7
был не раз
Сейчас нет на сайте
на мой взгляд это более емкий способ как с точки зрения написания кода так и с точки зрения выполнения скрипта оградится от ненужных запросов , прикрывание разного рода дыр .
повторюсь - на мой взгляд (возможно я ошибаюсь и данный метод не так эффективен , не исключаю что есть более интересные возможности ограничить доступ в те места куда людям лезть неположено )
lvovandДата: Воскресенье, 15 Сентября 2013, 22:51 | Сообщение # 8
старожил
Сейчас нет на сайте
"те места" - если обычные папки с изображениями и прочим, так запретить можно туда в принципе вход извне и выполнение в них любых скриптов,

если профи возьмется, он найдет способ обращаться к php-скрипту напрямую, вопрос что он от этого получит


Разработка и продвижение сайтов. Дизайн
DreamOffДата: Воскресенье, 15 Сентября 2013, 22:53 | Сообщение # 9
был не раз
Сейчас нет на сайте
речь идет только о php скриптах
lvovandДата: Воскресенье, 15 Сентября 2013, 23:12 | Сообщение # 10
старожил
Сейчас нет на сайте
о пхп,
вот ты настроил htaccess, проверку реферер,дополнительную переменную и т.д., и все что в адресе вводится переводится на index.php
но есть ajax.php так или иначе должен вызываться, правильно я понимаю?

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


Разработка и продвижение сайтов. Дизайн
БыдлокодерДата: Понедельник, 16 Сентября 2013, 08:47 | Сообщение # 11
частый гость
Сейчас нет на сайте
DreamOff, как я понял у тебя есть роутер, просто добавь маршрут для своего скрипта, и вызывай по аяксу свой новый маршрут, и все будет радостно.
DreamOffДата: Понедельник, 16 Сентября 2013, 11:03 | Сообщение # 12
был не раз
Сейчас нет на сайте
lvovand, это принцип защиты как в CMS Joomla , с помощью константы мы ограничиваем доступ к вызову скрипта - если человек вызывает скрипт напрямую то ему выдается ошибка так как константа определяется в головном файле . Если к примеру у меня много файлов и система организованна по принципу MVC то если я буду в каждом скрипте писать по 2-5 строк всяких проверок авторизации и т.д то скрипт будет выполяться долше , а так как скрипт заранее задумывается как высоконагруженный то эти лишние миллисекунды недопустимы (имхо).

Быдлокодер, вы немогли бы по подробнее рассказать ? Заранее благодарю.
lvovandДата: Понедельник, 16 Сентября 2013, 11:24 | Сообщение # 13
старожил
Сейчас нет на сайте
DreamOff, фреймворки с MVC и cms джумла подразумевают перенаправление на index.php, в котором уже идет обработка вызова, подключение файлов и т.д.
(при том что в подключаемых модулях уязвимостей хватает)
перенаправление настроил через .htacces и всего делов, можешь даже страницу с ошибкой выдавать, если кто напрямую к файлу обращается.

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


Разработка и продвижение сайтов. Дизайн

Сообщение отредактировал lvovand - Понедельник, 16 Сентября 2013, 11:25
БыдлокодерДата: Понедельник, 16 Сентября 2013, 13:02 | Сообщение # 14
частый гость
Сейчас нет на сайте
DreamOff, для подробностей надо видеть внутренности, но смысл в том что раз у тебя идет роутер через главный файл, то просто обращайся к скрипту как к остальным маршрутам на сайте.

Допустим для регистрации у тебя адрес что то вроде site.ru/reg, тогда для твоего аякса сделай site.ru/my_fucking_ajax. Вроде все просто.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг