Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как закрыть доступ к папке [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
Ch_chov
Отправлено: 17 Ноября, 2011 - 09:01:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




EuGen пишет:
Не очень понял, как это может помочь. Ведь можно в исходном коде посмотреть, что там загружается.
Если пользователь не имеет доступ в админку то не посмотрит.

(Отредактировано автором: 17 Ноября, 2011 - 09:01:34)

 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 09:03:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




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

Вот если наш Джо догадается до имени папки, он может догадаться и до имени файла Улыбка

Мы же все помним, что ему скажут, что доступа нет, а значит сам факт существования папки будет известен.
 
 Top
Ch_chov
Отправлено: 17 Ноября, 2011 - 09:05:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




armancho7777777, можно скрипты прогонять через какой-нибудь компрессор/агрегатор и сохранять со случайным именем. Если уж совсем параноя мучит, то закрывать через .htaccess, что бы доступ был только для IP адреса администратора.
Еще один вариант использовать базовую http авторизацию.
 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 09:08:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Ch_chov, это всё отстой, без использования шифрованной передачи данных (SSL) ни один параноик не может быть спокойным.
 
 Top
EuGen Администратор
Отправлено: 17 Ноября, 2011 - 09:09:13
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




О да. При каждом запуске скрипте создавать symlink на 1 раз со случайным именем.
Мне кажется, что достаточно знать, что это - административная панель и, стало быть, простой пользователь не увидит ничего (но об этом в первоначальной задаче не сказано)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Ноября, 2011 - 09:34:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




У меня реализовано примерно так:
PHP:
скопировать код в буфер обмена
  1. define("AJAX_LINK","g9jkfhjkhjkhjkfhjkhfjk46767j46735therty5ythyy6eyhetght5hj");
  2.  
  3. // it's ajax request?
  4. if (isset($_SERVER['HTTP_X_REQUESTED_WITH']))
  5.   $this->params = array_merge(array(AJAX_LINK),$this->params);
  6.  
  7. if ($this->params[0] == AJAX_LINK)
  8.   node::loadLibrary("libs/lib.ajax.php");

Т.е. кроме как через чпу доступа туда не будет, а подобрать хеш сложно.
Так, например для урла "/comments/" автоматически подгружаетсядополнительный ф-ционал который принимает POST от js.
Ну и далее работает по условиям...
 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 09:59:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




DeepVarvar пишет:
У меня реализовано примерно так:
Не понял как работает

Вот так вижу этот код я. При чём тут AJAX_LINK?
PHP:
скопировать код в буфер обмена
  1. define("AJAX_LINK","g9jkfhjkhjkhjkfhjkhfjk46767j46735therty5ythyy6eyhetght5hj");
  2. // it's ajax request?
  3. if (isset($_SERVER['HTTP_X_REQUESTED_WITH']))
  4. {
  5.   $this->params = array_merge(array(AJAX_LINK),$this->params);
  6.   node::loadLibrary("libs/lib.ajax.php");
  7. }

(Отредактировано автором: 17 Ноября, 2011 - 10:01:20)

 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Ноября, 2011 - 09:59:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Приведите пожалуйста пример с Options -Indexes, а то у меня пока с манипуляциями с файлом .htaccess не очень дела обстоят(

(Отредактировано автором: 17 Ноября, 2011 - 14:36:25)

 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 10:02:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Так просто добавить в .htaccess. Минус перед индексес указывает на отключение просмотра как содержимого папки.
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Ноября, 2011 - 10:04:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Самогонщик пишет:
При чём тут AJAX_LINK?
__autoload о чем нибудь говорит?
 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 10:07:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




DeepVarvar пишет:
__autoload о чем нибудь говорит?
Продолжай....
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Ноября, 2011 - 10:27:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В основной объект загружаются на основе данных чпу соответствующие модули.
Далее происходит локальный для модуля разбор логики приложения.
Но, когда имеется тот аяксовый заголовок, подключается сперва модуль (еще один контроллер) ajax,
он ставит нужные св-ва в соответствующие значения для режима AJAX,
или завершает работу, если ему что-то не понравится в данных,
или пересылает данные дальше, к модулю или выполняет что-то сам, все зависит от целей.
Срабатывает как bypass в разрыве.
Хеш нужен для того, чтобы нельзя было обратиться к модулю извне + возможность сменить в конфиге.
 
 Top
Самогонщик
Отправлено: 17 Ноября, 2011 - 10:57:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Вообще мой замечание было о том, что из кода ничего этого не следует.

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

Вопрос, зачем так прятать пхп файлы? не проще ли было сделать так, чтобы обращение к этим файлам не приносило бы никакого эффекта, тогда бы знание их названия названия и местоположения не давало бы ни какого профита?
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Ноября, 2011 - 13:18:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Вообще, изначально, я собирался сделать так (в роутере):

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function fanc_link($reqUR){
  4.  
  5.   $Addr = trim(rawurldecode($reqUR), '/');
  6.  
  7.   if ($Addr != '') {
  8.  
  9.   $Addr = explode('/',$Addr);
  10.  
  11.       if($Addr[0]){
  12.          
  13.              if($Addr[0] == "admin_derectory"){
  14.        
  15.                  unset($Addr[0]);
  16.                  header("Location: http://".$_SERVER['HTTP_HOST']);    
  17.                  exit;  
  18.          
  19.              }else{
  20.  
  21.                 $pages[] = htmlspecialchars($Addr[0]);  
  22.  
  23.                }
  24.           }        
  25.      }
  26. }
  27.  
  28.  


Все вызовы перенаправляются в индексный файл, и подключенный к нему роутер разбирает $_SERVER['REQUEST_URI'] и инклюдит соответствующие файла.

На пример, если адрес http://host.ru/Главная_страница/:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function fileGetContent ($mayFile, $page='') {
  4.    ob_start(); 
  5.    $page;      
  6.    include $mayFile;   
  7.    return ob_get_clean();
  8. }
  9.  
  10. $arrRout = array(
  11.      "Главная_страница" => "pages/index_page.php"
  12. );
  13.  
  14. $arrPages = array(
  15.      "Главная_страница",
  16.      "Контакты",
  17.      "И т.д."
  18. );
  19.  
  20. $pages = fanc_link($_SERVER['REQUEST_URI']);
  21.  
  22. if(isset($arrRout[$pages[0]])){
  23.  
  24.    if(in_array($pages[0], $arrPages)){ 
  25.  
  26.       $page = str_replace('_', ' ', $pages[0]);
  27.       $contentText = fileGetContent ($arrRout[$pages[0]], $page);
  28.  
  29.    }else{
  30.  
  31.       header("Location: http://".$_SERVER['HTTP_HOST']);       
  32.       exit;  
  33.  
  34.    }
  35.  
  36. }
  37.  
  38.  


Но почему-то при таком вызове http://host.ru/admin_derectory/, это часть не работает в Денвере:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if($Addr[0] == "admin_derectory"){
  4.  unset($Addr[0]);
  5.  header("Location: http://".$_SERVER['HTTP_HOST']);    
  6.  exit;  
  7.  
  8.  


Но если сделать так http://host[dot]ru/admin_derectory/file.php , то срабатывает.
(Добавление)
И ещё, почему-то Денвер не видит $_SERVER['HTTP_X_REQUESTED_WITH'].

(Отредактировано автором: 17 Ноября, 2011 - 17:42:08)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB