Qest

Qest
Рейтинг
40
Регистрация
21.10.2010
Должность
Coder
Интересы
Unix, Jquery

gterkin, в данном случае нет include/require, про недостатки сессий уже говорилось, капча не комельфо.

Мне пока видиться наилучший вариант с уникальным ключом записывающимся в базу/файл.

Тоесть в таком случае самый безопасный вариант: при каждом входе на страницу 1 генерировать уникальный ключ, и брать к примеру ip пользователя, записывать ip и ключ в базу, после передавать ключ файлу 2, в котором опять брать ip пользователя и проверять соответсвует ли полученный ключ тому ключу который записан в базе и для которого такой ip.

?

DenisVS:
Вынесите второй файл вообще из из директории пользователя сервера. Сам не пробовал, вы можете попробовать.

Да, я про такое читал, но в моем случае запрос ко второму файлу делается аяксом, тоесть JS, а так как JS это не серверный язык то мне кажется нельзя прописать в JS путь который за пределами корня. Во всяком случае я не знаю как.

UPD: Можно прописать htaccess таким образом:

---

SetEnvIf Referer "http://mysite.com/1.php" site

<FILES 2.php>

order deny,allow

deny from all

allow from env=site

</FILES>

---

И положить в папку с 2.php

В таком случае доступ к 2.php будет только у скриптов со страницы 1.php

Полагаю это наиболее простой вариант.

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

Вы не поверите, но я знаю что такое сессии. Ваш способ будет работать если каждый раз при открытии страницы генерировать новую сессию, делать запрос к базе, плюс во втором файлу так же делать запрос к базе (что не есть быстро), к тому же в сессии ограничение на 20 минут, и если пользователь потусуется на первой странице больше 20 минут то сессия удалиться, и что сравнивать во втором файле в таком случае? И вообще при чем тут сессии. Можно уж тогда просто генерировать уникальную строку и записывать ее в куку и базу при входе на первую страницу.

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

По поводу deny all. НЕТ!

У меня есть 2 файла, 1.php и 2.php

на 1.php, есть поиск ajax. Тоесть пользователь вводит запрос в инпут, и этот запрос отпарвляется аяксом на 2.php где обрабатывается и возвращает результаты на 1.php, где они выводятся.

Если я в папку с 2.php кладу htaccess с deny all. То поиск на 1.php перестает работать и в ручную я тоже не могу подключиться к 2.php

А мне нужно чтобы вручную я не мог подключиться, а поиск работал (тоесть скрипты работали, а через браузер нет)

---------- Добавлено 01.05.2012 в 21:10 ----------

Unicode:
сделайте ключ безопасности script.php?name=1&key=2093673047teg3634y9e
и еще добавьте ограничение по IP либо другим параметрам

Не понял, и что с этим ключом делать. Если он генерируется в первом файле и отправляется во второй то с чем его сравнивать во втором файле?

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

sigor:
А может, лучше фильтровать параметры GET-запроса в самом скрипте 2.php (по типу можна || нельзя)

Ок, другой пример. Есть файл 1.html с формой, в эту форму просто вводится id для удаления из базы данных с этим id, этот id через форму передается 2.php, который получает по GET или POST этот id и выполняет удаление из базы данных с этим id.

Нужно чтобы запрос к 2.php выполнялся только через форму на 1.html.

Но я просто могу вручную передать этот id для удаления файлу 2.php без формы.

И что здесь проверять в 2.php? Id пришел? пришел, удаляем...

DiAksID:
а тупо deny all выставить для папки со скриптами пробовали? ;)

В таком случае ни кто вообще подключиться не сможет ни хацкер через браузер ни сами скрипты на сервере. В этом сообственно и заключается проблема

'[umka:
;10349575']эффективным способом борьбы с такой самодеятельностью мне видится тщательная проверка входящих данных в 2.php, ну и капча (или её невидимое подобие).

А в htaccess нельзя ли органичить прямой доступ к файлу, но разрешить доступ скриптам?

Мне что-то с трудом верится что все сайты дабы избежать взлома разрабатывают какую то мудреную систему для такого случая.

pbasalaev:
Qest, Форум Китайский компот, там и производители и покупатели и поставщики.

Будьте добры ссылку

Всего: 186