nixp.ru v3.0

18 января 2017,
среда,
21:23:57 MSK

DevOps с компанией «Флант»
propeller написал 9 марта 2005 года в 12:33 (241 просмотр) Ведет себя как мужчина; открыл 53 темы в форуме, оставил 158 комментариев на сайте.

Может тема эта и забита, но такого я еще нигде не видел.

Индекс — /var/www/html/. Есть файл /var/www/html/history/.htaccess:

AuthType Basic

AuthName «Adm area»

AuthUserFile /usr/local/apache/.passwd

Require user Pupkin

Файл создан htpasswd -c;

В конфиге апача изменил для /var/www/html на AllowOverride AuthConfig;

Так вот, что меня здесь удивляет. http://localhost/index.php?path=./history;

Просят меня ввести пароль. сопротивляюсь — жму на отмены, ввожу что-то в поля. так вот после какого-то числа таких операций у меня уже ничего не просят и просто показывают информацию. Да, а просьба о пароле-то тоже ведь на фоне той самой страницы, которую и защищаем! полная чепуха выходит.

Master
propeller
Может тема эта и забита, но такого я еще нигде не видел.

Индекс — /var/www/html/. Есть файл /var/www/html/history/.htaccess:

AuthType Basic

AuthName «Adm area»

AuthUserFile /usr/local/apache/.passwd

Require user Pupkin

вместо последней строки:

Require valid-user

propeller

Нет, что-то не вышло. то есть тут опять раз восесь на отмену нажмешь и все нормально.

Да даже если и не так, когда я иду по ссылке http://localhost/index.php?path=./history;

Он просит с меня пароль\логин, но при это отображает все это на фоне как раз той самой страницы, которая и предполагает быть защищенной. там все видно!

Genie

да-да, а о содержимом index.php и о том, как именно оно обрабатывает переменную path, всем необходимо подключаться к астралу и вылавливать это там.

сам апача будет спрашивать только при прямом обращении http://localhost/history/

и вот там уже отвертеться ну никак не получится. ;)

Dreid

Кстати говоря, подобная практика (указывать пути к инклюдящейся страничке в качестве параметра к php-шнику) очень часто предстявляет из себя большую дыру в security. Ибо первое, что приходит в голову — запроcить index.php?path=/etc/passwd. Конечно, кроме списка пользователей и хешированных паролей я ничего ценного не получу, но это же всего лишь первый шаг — много что ещё можно придумать. К примеру (если это действительно include), я могу сказать index.php?path=ftp://path.to.my.own.site/path/to/my/php, в которой будет прописана процедура изменения рутового пароля или запуска на каком-нибудь порту ssh с авторизацией по ключу. Да много что можно придумать.

propeller

А что такое астрал? Ну а если в пхп обходит такую защиту, то зачем надо просить пароль? Ну а доступ к папкам как таковым можно закрыть просто параметром Indexes на апаче. только вот теперь неясно, коль скоро .htaccess не помог, как делать ограничение доступа после авторизации.

ну допустим, что path я все-таки проверяю.

function block_path_name ($path) {

$rw="^\./([[:alnum:]]{3,15}/){0,10}[[:alnum:]]{3,15}(\.[[:alnum:]]{2,5})?$»;

$path=htmlspecialchars(stripslashes(substr(trim($path),0,200)));

return (!ereg($rw,$path))?(«./»):($path);

}

Ну и потом я открываю директорию opendir($path); вроде как таким образом разговор про скрипт со стороннего сервера пропадет.

Genie

.htaccess не ограничивает доступ к файлам и папкам нв уровне скриптов.

он ограничивает доступ на уровне запросов.

т.е. запрос вида http://localhost/getfile.php?what=adm/data при таком вот содержимом getfile.php:

<? include($_GET['what'].'.html'); ?>


просто выдаст adm/data.html

в то время как прямой запрос http://localhost/adm/data.html уже будет смотреть на содержимое .htaccess и, при необходимости, запрашивать пароль.

ps:

А что такое астрал?


а это, попросту говоря, то, откуда телепаты и прочие экстрасенсорные личности дополнительную неуказанную информацию получают самостоятельно. ;))

propeller

Так я не пишу таких инклудов;

$path=$_GET["path"];

Ну а потом я ее обрабатывая той функцией, что писал выше. А потом я только открываю opendir($path). Ну и только если в этой директории я найду правильный файл я буду разговраивать этим каталогом. больше вообще нигде не использую переменную $path.

Genie

ну, раз не особенно понимаешь разницу…

в общем, может тебе самому проверку нужную прикрутить, а?

куда более понятный для тебя в плане работы механизм получится.

propeller
Genie
ну, раз не особенно понимаешь разницу…

в общем, может тебе самому проверку нужную прикрутить, а?

куда более понятный для тебя в плане работы механизм получится.

Ну ничего не понял! если я тут не понимаю где-то какую-то разницу, то скажи где!

Про проверку самому — ну а что я делаю функцией block_path_name?

propeller

Вот, кстати, на opennet.ru предлагают вот такую схему аутентияикации для пхп. Есть ли на нее претензии по поводу ее секьюрности?

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header(«WWW-Authenticate: Basic realm=\"My Realm\"»);
header(«HTTP/1.0 401 Unauthorized»);
echo «Текст, отправляемый в том случае,
если пользователь нажал кнопку Cancel\n»;
exit;
} else {
echo »
Hello {$_SERVER['PHP_AUTH_USER']}.»;
echo »
Вы ввели пароль {$_SERVER['$PHP_AUTH_PW']}.»;
}
?>

Мне вот кажется, что выводить на экран пароль после его ввода совсем не следует. но не это главное в моем вопросе.

Genie

вот же вредный-то…

::1 - - [13/Mar/2005:09:34:59 +0600] "GET /getfile.php?what=adm/index HTTP/1.1" 200 4129 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050109 Debian/1.7.5-0.backports.org.1"
::1 - - [13/Mar/2005:09:35:55 +0600] "GET /adm/index.html HTTP/1.1" 401 484 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050109 Debian/1.7.5-0.backports.org.1"

в первом случае с меня ничего не спрашивают. и нормально отображается страница.

а во втором я на вопрос ввода пароля Esc жму. и тогда мне выводится

<font size=«+2»>Authorization Required</font>

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn’t understand how to supply the credentials required.

Apache/1.3.27 Server at localhost Port 80

итак, вопрос на размышление:

какая разница в механизме вывода двух запросов

  • http://hosting/adm/index.html


  • http://hosting/getfile.php?what=adm/index

getfile.php приведён ранее.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.