PHP | Безопасность | Исполняющий файл

Qest
На сайте с 21.10.2010
Offline
40
2361

К примеру есть файл 1.html на котором форма, с формы берутся данные и передаются файлу 2.php который записывает данные в базу. Метод POST или GET.

Так вот, я же могу вручную передать данные файлу 2.php, не заполняя формы, если гет, то просто вручную в браузере пропишу 2.php?name=1 к примеру, а если пост, то на своем компьютере запущу файл который передаст постом.

Как это предусмотреть? В файле 2.php проверять откуда был переход? или какие-то другие методы?

---------- Добавлено 01.05.2012 в 18:55 ----------

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

[umka]
На сайте с 25.05.2008
Offline
456
#1

Единственный способ — проверять Referer-а.

Но, сами понимаете, и реферера можно любого написать, если кто-то начнёт целенаправленно ковырять ваш сайт.

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

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

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

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

DiAksID
На сайте с 02.08.2008
Offline
218
#3

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

show must go on !!!...
Qest
На сайте с 21.10.2010
Offline
40
#4
DiAksID:
а тупо deny all выставить для папки со скриптами пробовали? ;)

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

sigor
На сайте с 02.05.2011
Offline
15
#5

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

DiAksID
На сайте с 02.08.2008
Offline
218
#6
Qest:
В таком случае ни кто вообще подключиться не сможет ни хацкер через браузер ни сами скрипты на сервере. В этом сообственно и заключается проблема

уверены ? на сервере файлы запускаются с правами владельца, им deny all побоку. в любом нормальном фреймворке/cms скрипты ядра просто должны лежать в папке с dey all и ничего - как то работают 😂...

Qest
На сайте с 21.10.2010
Offline
40
#7
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 пришел? пришел, удаляем...

edogs software
На сайте с 15.12.2005
Offline
775
#8
Qest:
К примеру есть файл 1.html на котором форма, с формы берутся данные и передаются файлу 2.php который записывает данные в базу. Метод POST или GET.

Так вот, я же могу вручную передать данные файлу 2.php, не заполняя формы, если гет, то просто вручную в браузере пропишу 2.php?name=1 к примеру, а если пост, то на своем компьютере запущу файл который передаст постом.

Как это предусмотреть? В файле 2.php проверять откуда был переход? или какие-то другие методы?

Как вариант - генерите уникальный ИД для каждой формы запрашиваемой с сервера и среди прочих параметров размещаете его в форме. В принимающем файле проверяете наличие этого ИД. Это нечто вроде защиты от csrf.

Qest:


---------- Добавлено 01.05.2012 в 18:55 ----------

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

Прямой ответ на Ваш вопрос - .htaccess с deny all в директорию, а скрипт запускать из консоли ( exec и т.д.).

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
SI
На сайте с 03.12.2007
Offline
130
#9

Когда один php скрипт подключает другой через include/require, ограничения в .htaccess не действуют.

-= Онлайн сервисы =-
M
На сайте с 12.11.2005
Offline
122
#10

При deny all нельзя обратиться к файлу через браузер, но можно обратиться скриптом на том же сайте (насколько я понимаю).

А так - проверять, фильтровать и экранировать поля, других вариантов-то вроде как и нет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий