Тоесть в таком случае самый безопасный вариант: при каждом входе на страницу 1 генерировать уникальный ключ, и брать к примеру ip пользователя, записывать ip и ключ в базу, после передавать ключ файлу 2, в котором опять брать ip пользователя и проверять соответсвует ли полученный ключ тому ключу который записан в базе и для которого такой ip.
DenisVS: Вынесите второй файл вообще из из директории пользователя сервера. Сам не пробовал, вы можете попробовать.
Да, я про такое читал, но в моем случае запрос ко второму файлу делается аяксом, тоесть JS, а так как JS это не серверный язык то мне кажется нельзя прописать в JS путь который за пределами корня. Во всяком случае я не знаю как.
iopiop: почитайте про сессии. коротко - при открытии первой страницы генерится достаточно большое случайное число которое а) сохраняется в куку на клиенте (в броузере) б) сохраняется на сервере в базе/файле при вызове второй страницы ваш скрипт берет переданную броузером куку и ищет ее в базе/файле. если находит - предполагается что запрос пришел с первой страницы.
Вы не поверите, но я знаю что такое сессии. Ваш способ будет работать если каждый раз при открытии страницы генерировать новую сессию, делать запрос к базе, плюс во втором файлу так же делать запрос к базе (что не есть быстро), к тому же в сессии ограничение на 20 минут, и если пользователь потусуется на первой странице больше 20 минут то сессия удалиться, и что сравнивать во втором файле в таком случае? И вообще при чем тут сессии. Можно уж тогда просто генерировать уникальную строку и записывать ее в куку и базу при входе на первую страницу.
Можно сделать вариант с ключем, если придумать алгоритм по которому он генерируется и сравнивается в втором файле. Тоесть например в первом файле генерируется ключ как сегодняшнее число + 12345 и передается во второй файл, где так же по такому же алгоритму создается ключ и сравнивается с переданным.
на 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 пришел? пришел, удаляем...
'[umka: ;10349575']эффективным способом борьбы с такой самодеятельностью мне видится тщательная проверка входящих данных в 2.php, ну и капча (или её невидимое подобие).
А в htaccess нельзя ли органичить прямой доступ к файлу, но разрешить доступ скриптам?
Мне что-то с трудом верится что все сайты дабы избежать взлома разрабатывают какую то мудреную систему для такого случая.
gterkin, в данном случае нет include/require, про недостатки сессий уже говорилось, капча не комельфо.
Мне пока видиться наилучший вариант с уникальным ключом записывающимся в базу/файл.
Тоесть в таком случае самый безопасный вариант: при каждом входе на страницу 1 генерировать уникальный ключ, и брать к примеру ip пользователя, записывать ip и ключ в базу, после передавать ключ файлу 2, в котором опять брать ip пользователя и проверять соответсвует ли полученный ключ тому ключу который записан в базе и для которого такой ip.
?
Вынесите второй файл вообще из из директории пользователя сервера. Сам не пробовал, вы можете попробовать.
Да, я про такое читал, но в моем случае запрос ко второму файлу делается аяксом, тоесть 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
Полагаю это наиболее простой вариант.
почитайте про сессии.
коротко - при открытии первой страницы генерится достаточно большое случайное число которое
а) сохраняется в куку на клиенте (в броузере)
б) сохраняется на сервере в базе/файле
при вызове второй страницы ваш скрипт берет переданную броузером куку и ищет ее в базе/файле. если находит - предполагается что запрос пришел с первой страницы.
Вы не поверите, но я знаю что такое сессии. Ваш способ будет работать если каждый раз при открытии страницы генерировать новую сессию, делать запрос к базе, плюс во втором файлу так же делать запрос к базе (что не есть быстро), к тому же в сессии ограничение на 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 ----------
сделайте ключ безопасности script.php?name=1&key=2093673047teg3634y9e
и еще добавьте ограничение по IP либо другим параметрам
Не понял, и что с этим ключом делать. Если он генерируется в первом файле и отправляется во второй то с чем его сравнивать во втором файле?
Или вы имеете введу сделать постоянный ключ, отправлять постом и проверять его во втором файле? Впринципе в таком случае можно будет взломать только если знаешь этот ключ
А может, лучше фильтровать параметры GET-запроса в самом скрипте 2.php (по типу можна || нельзя)
Ок, другой пример. Есть файл 1.html с формой, в эту форму просто вводится id для удаления из базы данных с этим id, этот id через форму передается 2.php, который получает по GET или POST этот id и выполняет удаление из базы данных с этим id.
Нужно чтобы запрос к 2.php выполнялся только через форму на 1.html.
Но я просто могу вручную передать этот id для удаления файлу 2.php без формы.
И что здесь проверять в 2.php? Id пришел? пришел, удаляем...
а тупо deny all выставить для папки со скриптами пробовали? ;)
В таком случае ни кто вообще подключиться не сможет ни хацкер через браузер ни сами скрипты на сервере. В этом сообственно и заключается проблема
;10349575']эффективным способом борьбы с такой самодеятельностью мне видится тщательная проверка входящих данных в 2.php, ну и капча (или её невидимое подобие).
А в htaccess нельзя ли органичить прямой доступ к файлу, но разрешить доступ скриптам?
Мне что-то с трудом верится что все сайты дабы избежать взлома разрабатывают какую то мудреную систему для такого случая.
Qest, Форум Китайский компот, там и производители и покупатели и поставщики.
Будьте добры ссылку