IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   .htaccess & .htpasswd (http://www.imho.ws/showthread.php?t=61855)

Drualex 15.06.2004 21:26

.htaccess & .htpasswd
 
Такой вот вопрос, мне надо ограничить доступ для отдельного каталога, я в .htaccess ввел:
AuthName "введите пароль"
AuthType Basic
AuthUserFile "/htdocs/.htpasswd"
<Files *.*>
require valid-user
</Files>
.htpasswd ввел:
123:123
На ОС Windows все на ура работает, но когда я на сервер кинул, тут меня ждал большой облом...
Я сохранил эти файлы в UNIX кодировке, но от этого лучше не стало, правда я читал, что надо что бы пароли были закодированы, а я просто так написал, хотя работало в "Окнах"...
Работал я на Денвере, но там нет htpasswd.exe, может в нем все дело?
Всмысле в том что обязательно кодировать надо?
Помогите разобраться.

RaZEr 15.06.2004 22:27

Все пароли в htpasswd должны быть в md5. Можно конечно пофилосовствовать на тему "а нужно ли это, и зачем" ;) , но я тебе советую просто это сделать и не забивать голову философией.

PS: www.php.net/md5

Drualex 15.06.2004 23:05

2RaZEr Спасибо, самое главное у меня это то, что не работает только на хосте с Юниксом, я научился с htpasswd.exe работать. Все также у меня на Апаче и на Денвере все ОК...а вот с хостом траблы :( Я вот что думаю, что там возможно не удовлетворяет путь к этому пассворду, я вроде указал полный путь...но кто знает:)
ЗЫ. Я очень уважаю md5 и пользуюсь only им. :beer: :yees:

RaZEr 15.06.2004 23:15

Цитата:

Я вот что думаю, что там возможно не удовлетворяет путь к этому пассворду, я вроде указал полный путь...но кто знает
Да нет, это просто демон httpd так написан для nix, что берет только кодированные пароли.

Drualex 15.06.2004 23:21

Цитата:

RaZEr:
Да нет, это просто демон httpd так написан для nix, что берет только кодированные пароли.
Хм...но я закодировал с помощью проги htpasswd.exe в формат хеш кода md5, что же мне тогда делать??? Если в этом проблемма, то может ты знаешь решение? Буду очень признателен. :beer:

RaZEr 15.06.2004 23:24

Цитата:

Хм...но я закодировал с помощью проги htpasswd.exe в формат хеш кода md5, что же мне тогда делать???
Ничего. А что, не работает?

Drualex 15.06.2004 23:33

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

RaZEr 15.06.2004 23:38

Код:

AuthUserFile "/htdocs/.htpasswd"
Это абсолютный путь.

Drualex 15.06.2004 23:43

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

Hubbitus 17.06.2004 02:54

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

На Unix нельзя использовать Plain/texе пароли (помоему нигде кроме винды нельзя :))
А так все правильно у написано (я даже проверил еще раз чтобы убедиться :))!

P.S. Кстати используется не md5 шифрование, а crypt (с помощью него сгенерить можно, в PHP есть такая функция)!
md5 и SHA шифрование может использоваться как дополнительное, и по-умолчанию не используется.
например, тогда будет не 123:123, например
Код:

123:$1$kUJAa/q3$9crVqgRc8oJ79LDhg0gpe1

Drualex 17.06.2004 15:42

2Hubbitus На самом деле трабла была именно в Абсолютном пути, т.е. там был свой наворот с логином, я просто не знал что надо еще и логин свой писать по типу этого: /www/login/htdocs/*** а я не так писал, отсюда и весь сырбор, насчет кодировки crypt, когда я ее ставил на htpasswd.exe, она написала, что будет автоматически выбран md5, но это ввобщем не помешало работать на сервере у них:)
ЗЫ. Так что всем спасибо, я все же разобрался с данной траблой (правда с помощью админа).

RaZEr 17.06.2004 19:25

Цитата:

там был свой наворот с логином
Нечего на зеркало пинять, коли ... хмм, о чем это я? ;)

stasok 14.09.2004 18:46

у меня тоже что то это не работает, что делать??
.htaccess
AuthUserFile "/htdocs/.htpasswd"
AuthName "StasOK"
AuthAuthoritative on
AuthType Basic
<Files *.*>
require valid-user
</Files>

.htpasswd
admin:77aOjT1lqxfQQ
вот сайт www.isranews.w6.ru

RaZEr 14.09.2004 19:04

1. К файлу авторизации ты указываешь абсолютный путь. И скорей всего по глупости, потому что htdocs чаще всего имеет более длинный путь (например: /usr/local/apache/htdocs).
2. Если "77aOjT1lqxfQQ" это пароль, то работать не будет (исключение сервера на базе windows). Пароль должен быть кодирован md5/sha/crypt

stasok 15.09.2004 17:58

Цитата:

Сообщение от RaZEr
1. К файлу авторизации ты указываешь абсолютный путь. И скорей всего по глупости, потому что htdocs чаще всего имеет более длинный путь (например: /usr/local/apache/htdocs).
2. Если "77aOjT1lqxfQQ" это пароль, то работать не будет (исключение сервера на базе windows). Пароль должен быть кодирован md5/sha/crypt

а если фаил .htpasswd тамже где и .htaccess то нужно всеравно указывать или нет??
и что нащёт пароля, я его делал через этот сайт http://www.euronet.nl/~arnow/htpasswd/

RaZEr 15.09.2004 18:06

Цитата:

а если фаил .htpasswd тамже где и .htaccess то нужно всеравно указывать или нет??
Можно указать только имя.

Цитата:

и что нащёт пароля, я его делал через этот сайт http://www.euronet.nl/~arnow/htpasswd/
Мне неведомо что за пароли генерирует этот сайт. С апачем поставляется специальная программа htpasswd. Она предназначена для работы с .passwd файлами. Её и используй.

stasok 15.09.2004 18:08

Цитата:

Сообщение от RaZEr
Можно указать только имя.

Мне неведомо что за пароли генерирует этот сайт. С апачем поставляется специальная программа htpasswd. Она предназначена для работы с .passwd файлами. Её и используй.

да только где её взять?:?:

RaZEr 15.09.2004 18:17

Там же где и апач. Если шаред и нет консоли, то выходом будет - поставить апач к себе (... или пользоваться вышеупомянутой страничкой в надежде что она делает то, что надо).

stasok 15.09.2004 18:41

Цитата:

Сообщение от RaZEr
Там же где и апач. Если шаред и нет консоли, то выходом будет - поставить апач к себе (... или пользоваться вышеупомянутой страничкой в надежде что она делает то, что надо).

если ты про эту ссылку http://www.php.net/md5 , то я там не чего не понял что и как

RaZEr 15.09.2004 18:42

Нет. Я про твою ссылку.

stasok 15.09.2004 18:44

Цитата:

Сообщение от RaZEr
Нет. Я про твою ссылку.

так дело в том что я ей и пользуюсь, вот только не могу понять почему это всё не работает

CEO 15.09.2004 22:13

Можно генерить необходимые md5 хеши и записывать их в .htpasswd простым скриптом:
PHP код:

<?php
if (isset($login) and $login != "" and isset($pass) and $pass != ""):
$file fopen(".htpasswd","a");
$p md5($pass);
$res=$login.":".$p;
fputs($file,$res);
?>

Полезная ссылка:
http://www.php.net/manual/en/function.md5.php/

stasok 16.09.2004 14:00

Цитата:

Сообщение от CEO
Можно генерить необходимые md5 хеши и записывать их в .htpasswd простым скриптом:
PHP код:

<?php
if (isset($login) and $login != "" and isset($pass) and $pass != ""):
$file fopen(".htpasswd","a");
$p md5($pass);
$res=$login.":".$p;
fputs($file,$res);
?>

Полезная ссылка:
http://www.php.net/manual/en/function.md5.php/

Не работает твой скрипт вот посмотри что делает http://members.lycos.co.uk/stasok/

RaZEr 16.09.2004 17:21

Цитата:

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

stasok 17.09.2004 01:10

Цитата:

Сообщение от RaZEr
Ты забыл написать какой пароль ты кодировал.

что значит забыл, я написал вот так
PHP код:

<?php 
if (isset($login) and $login != "admin" and isset($pass) and $pass != "stasok"): 
$file fopen(".htpasswd","a"); 
$p md5($pass); 
$res=$login.":".$p
fputs($file,$res); 
?>


RaZEr 17.09.2004 10:07

Цитата:

что значит забыл, я написал вот так
М-да. Не перевелись еще ... хм. Скрипт правиль было не нужно. Его нужно было запускать как "http://yourserver.com/scriptname.php?login=<твой_логин>&pass=<твой_пароль>" (+ "register_globals" должно быть в "on"). Но сделай проще. Запусти скрипт:
PHP код:

<? echo md5("<впиши свой пароль>"); ?>

Далее открой .htpasswd и впиши туда "<логин>:<то, что выдал скрипт>" (набор латинских букв и цифр) . Если там есть другие строки, их можно удалить.

PS: А скрипт на той странице работает интересно... он каждый раз выдает новый хэш для одного и того же пароля...

InsaneX 17.09.2004 18:51

v .htpasswd pass hranitsya ne v md5... tochnee ne vsegda eto md5.. mojet bit' i blowfish, i des i cleartext.. cherez php eto funkciya crypt("pa$$word");

stasok 18.09.2004 16:39

Цитата:

Сообщение от RaZEr
М-да. Не перевелись еще ... хм. Скрипт правиль было не нужно. Его нужно было запускать как "http://yourserver.com/scriptname.php?login=<твой_логин>&pass=<твой_пароль>" (+ "register_globals" должно быть в "on"). Но сделай проще. Запусти скрипт:
PHP код:

<? echo md5("<впиши свой пароль>"); ?>

Далее открой .htpasswd и впиши туда "<логин>:<то, что выдал скрипт>" (набор латинских букв и цифр) . Если там есть другие строки, их можно удалить.

PS: А скрипт на той странице работает интересно... он каждый раз выдает новый хэш для одного и того же пароля...

я незнаю, неработает, вот посмотри http://members.lycos.co.uk/stasok/ зайди сюда тут я сгенерировал пароль ствоим скриптом , а тут я его вставил в .htpasswd
http://members.lycos.co.uk/stasok/md5
user admin
pass 12qw

может быть у меня скрипт не правельный
PHP код:

AuthType Basic
AuthName 
"Private"
AuthAuthoritative on
AuthUserFile 
.htpasswd
<Files *>
require 
valid-user
</Files


RaZEr 18.09.2004 19:45

Напиши проще:

AuthType Basic
AuthName "Private"
AuthUserFile ".htpasswd"
Require valid-user

InsaneX 20.09.2004 03:51

Вложений: 3
iSecured v1.0 IMHO EDITION :beer:

napisal script kotoriy reshaet vse problemi s .htaccess i .htpasswd :) dumayu na screenshotah vse vidno
tested on php4, php5, mysql, linux(apache13) and freebsd(apache2)

how to install:
zakachivaem na host, delaem bazu v mysql, importiruem isecured.sql file v bazu, menyaem config.php i vrode vse :)

bug reports welcome :)

Download iSecured v1.0 IMHO EDITION 28kb

PS: hotel bi uslishat' chego ne hvataet i chto dopisat'..
PPS: otdelnoe spasibo AID'u za testirovanie =)

AID 20.09.2004 03:59

Держи от меня пятерку :)! :yees:

stasok 20.09.2004 15:34

не работает , почему то http://members.lycos.co.uk/stasok/iSecured/

InsaneX 20.09.2004 16:33

stasok
chmod 777 iSecured cherez ftp sdelay, i tak s kajdoy direktoriey kotoruyu hochesh videt' v spiske.. + put' nado propisat' v confige

features in upcoming release v1.1
  • layout polnostiyu na XHTML 1.1
  • napisat' installer dlya lamerov :)
  • registraciya userov s milom + oplata membership'a cherez webmoney/paypal/cc/e-gold + forgot password (etot module vryadli budet free :)
  • custom 401 i 403 stranici
  • anti-bruteforce
  • baza dannih na vibor postgresql ili mysql
  • personal certificate authentification with ssl
release date: 30 sept.

RaZEr 20.09.2004 19:57

2 stasok: Я тут подумал почему у тебя авторизация может не работать. Попробуй прописать абсолютный путь к файлу с паролями. Возможно апач просто его не находит. Чтобы узнать абсолютный путь запусти в папке с .htpasswd скрипт abspath.php:
PHP код:

<? echo getcwd().'/.htpasswd'?>


stasok 20.09.2004 23:01

Цитата:

Сообщение от InsaneX
stasok
chmod 777 iSecured cherez ftp sdelay, i tak s kajdoy direktoriey kotoruyu hochesh videt' v spiske.. + put' nado propisat' v confige

features in upcoming release v1.1
  • layout polnostiyu na XHTML 1.1
  • napisat' installer dlya lamerov :)
  • registraciya userov s milom + oplata membership'a cherez webmoney/paypal/cc/e-gold + forgot password (etot module vryadli budet free :)
  • custom 401 i 403 stranici
  • anti-bruteforce
  • baza dannih na vibor postgresql ili mysql
  • personal certificate authentification with ssl
release date: 30 sept.

зделал, когда ещё ставил на все папки всеравно не пашет

вот здесь зделал тоже самое http://isranews.w6.ru/
залил всё что было
залили sqlв базу стала нормаьно
потом положил config в главную деректорию и изменил его как надо было но всеравно не пашет

Цитата:

Сообщение от RaZEr
2 stasok: Я тут подумал почему у тебя авторизация может не работать. Попробуй прописать абсолютный путь к файлу с паролями. Возможно апач просто его не находит. Чтобы узнать абсолютный путь запусти в папке с .htpasswd скрипт abspath.php:
PHP код:

<? echo getcwd().'/.htpasswd'?>


спасибо теперь всё работает, я запустил его, он мне показал вот это /data/members/free/tripod/uk/s/t/a/stasok/htdocs/.htpasswd
я это прописал в access и всё окей

InsaneX 20.09.2004 23:10

Цитата:

stasok:
потом положил config в главную деректорию
config v etc doljen bit' :)

stasok 20.09.2004 23:34

Цитата:

Сообщение от InsaneX
config v etc doljen bit' :)

вроде всё окей http://members.lycos.co.uk/stasok/iSecured/
всё ништяк спасибо

Crime 09.12.2004 19:11

удалил

hempsmoke 16.03.2005 21:35

PHP код:

<?php 
if (isset($login) and $login != "" and isset($pass) and $pass != ""): 
$file fopen(".htpasswd","a"); 
$p md5($pass); 
$res=$login.":".$p
fputs($file,$res); 
?>

в скрипте разве не надо поставить
PHP код:

"\n" 

PHP код:

$res=$login.":".$p."\n"

?

CEO 18.03.2005 08:16

Ну да, надо вот так, наверное:
PHP код:

<?php 
$GLOBALS
['_CRYPT_APR_MD5_64'] = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function 
_to64($value$count){
        
$result '';
        
$count  abs($count);
        while(--
$count) {
           
$result .= $GLOBALS['_CRYPT_APR_MD5_64'][$value 0x3f];       
           
$value >>= 6;
        }
        return 
$result;
    }
 function 
_bin($hex){
        
$rs '';
        
$ln strlen($hex);
        for(
$i 0$i $ln$i += 2) {
            
$rs .= chr(array_shift(sscanf(substr($hex$i2), '%x')));
        }
return 
$rs;
    }
function 
encrypt($string$salt null){
        if (
is_null($salt)) {
            
$salt _genSalt();
        } elseif (
preg_match('/^\$apr1\$/'$salt)) {
            
$salt preg_replace('/^\$apr1\$(.{8}).*/''\\1'$salt);
        } else {
            
$salt substr($salt0,8);
        }
        
        
$length     strlen($string);
        
$context    $string '$apr1$' $salt;
        
$binary     _bin(md5($string $salt $string));
        
        for (
$i $length$i 0$i -= 16) {
            
$context .= substr($binary0, ($i 16 16 $i));
        }
        for ( 
$i $length$i 0$i >>= 1) {
            
$context .= ($i 1) ? chr(0) : $string[0];
        }
        
        
$binary _bin(md5($context));
        
        for(
$i 0$i 1000$i++) {
            
$new = ($i 1) ? $string substr($binary0,16);
            if (
$i 3) {
                
$new .= $salt;
            }
            if (
$i 7) {
                
$new .= $string;
            }
            
$new .= ($i 1) ? substr($binary0,16) : $string;
            
$binary _bin(md5($new));
        }
        
        
$p = array();
        for (
$i 0$i 5$i++) {
            
$k $i 6;
            
$j $i 12;
            if (
$j == 16) {
                
$j 5;
            }
            
$p[] = _to64(
                (
ord($binary[$i]) << 16) |
                (
ord($binary[$k]) << 8) |
                (
ord($binary[$j])),
                
5
            
);
        }
        
        return 
            
'$apr1$' $salt '$' implode($p) . 
            
_to64(ord($binary[11]), 3);
    }
  function 
_genSalt(){
        
$rs '';
        for(
$i 0$i 8$i++) {
            
$rs .=$GLOBALS['_CRYPT_APR_MD5_64'][rand(0,63)];
        }
        return 
$rs;
    }


if (isset(
$login) and $login != "" and isset($pass) and $pass != "")
{
$file fopen(".htpasswd","a");
$p encrypt($pass)."\n\r";
$res=$login.":".$p
fputs($file,$res);}
?>



Часовой пояс GMT +4, время: 22:00.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.