2011-03-08 8 views

Respuesta

13

Es un simple proceso de dos pasos

En su .htaccess poner

AuthType Basic 
AuthName "restricted area" 
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd 
require valid-user 

uso http://www.htaccesstools.com/htpasswd-generator/ o la línea de comandos para generar la contraseña y se pone en el Htpasswd

Nota 1: Si está utilizando cPanel, debe configurarlo en la sección de seguridad "Directorios de protección con contraseña"

EDIT: Si esto no funciona, entonces además probablemente que tiene que hacer un AllowOverride All al directorio de la .htaccess (o al menos a las anteriores) en http.conf seguido de un reinicio de Apache

<Directory /path/to/the/directory/of/htaccess> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
</Directory> 
+1

¿Debo poner tanto el archivo '.htaccess' como los archivos' .htpasswd' en el directorio del sudomain? ¿O coloco el archivo '.htpasswd' dentro del directorio que quiero proteger y' .htaccess' en el directorio del subdominio? – Odyss3us

+0

@ user270311 necesita poner el .htaccess en el directorio donde debe proteger. así que aquí en el directorio del subdominio. y .htpasswd en el directorio en cualquier lugar con los permisos adecuados que se especifican en AuthUserFile – Mahesh

+4

Formularé esto de manera diferente: coloque el .htpasswd en un directorio que no esté expuesto a la web de ninguna manera (protegida o no) aún esté disponible para apache. –

1

Probablemente desee utilizar el módulo mod_auth_digest. Apache ha proporcionado una muy buena guide para usar la gama completa de módulos de autenticación y autorización.

+1

mira esto: "Este módulo implementa HTTP Digest autenticación (RFC2617), y proporciona una alternativa a mod_auth_basic donde la contraseña no se transmite como texto claro. Sin embargo, esto no conlleva una ventaja de seguridad significativa sobre la autenticación básica. Por otro lado, el almacenamiento de contraseñas en el servidor es mucho menos seguro con la autenticación resumida que con la autenticación básica. El r Antes, usar autenticación básica y encriptar toda la conexión usando mod_ssl es una alternativa mucho mejor ". – biocyberman

+0

@biocyberman, gracias por la corrección. Dejaré la publicación como una advertencia para el futuro. – sarnold

2

Para proteger con contraseña un directorio servido por Apache, necesita un archivo .htaccess en el directorio que desea proteger y un archivo .htpasswd que puede estar en cualquier lugar de su sistema al que el usuario Apache pueda acceder (pero póngalo en un lugar prudente y privado). Lo más probable es que no desee poner .htpasswd en la misma carpeta que .htaccess.

Es posible que el archivo .htaccess ya exista. Si no, créelo. A continuación, inserte:

AuthType Basic 
AuthName "Your authorization required message." 
AuthUserFile /path/to/.htpasswd 
require valid-user 

A continuación, cree un archivo .htpasswd con el nombre de usuario y la contraseña que desee. La contraseña debe ser encriptada. Si está en un servidor Linux, puede usar el comando htpasswd que cifrará la contraseña por usted. Aquí es cómo ese comando se puede utilizar para esto:

htpasswd -b /path/to/password/file username password

1

que necesita para generar una contraseña (nombre de usuario + contraseña) de cadena para la autenticación, escribirlo en un archivo y colocarlo dentro del subdirectorio desea restringir acceso.

cadena se parece,

username:hashkey 
  • Puede utilizar HTTP password generator tool para hacer esto.
  • Copie y pegue la cadena que obtuvo del sitio anterior en un nuevo archivo (.htpasswd) en cualquier lugar fuera de la raíz web de su sitio (mejor para mantener en cualquier lugar dentro del directorio principal del usuario).
  • Agregue las siguientes líneas en su archivo .htaccess.
AuthType Basic 
AuthName "Require Authentication" 
AuthUserFile [PATH_TO_FILE]/.htpasswd 
Require valid-user 
  • Si la contraseña no está activando, comprobar el permiso del archivo .htaccess.

  • Si la autenticación falla, verifique la existencia del archivo .htpasswd en la ubicación especificada. (Asegúrese de que su cuenta de usuario tenga suficientes privilegios en el archivo .htpasswd para leer)

  • No necesita reiniciar el servidor para lograr esto.

Háganme saber si tiene alguna consulta.

0

Para crear una contraseña correcta, puede crear un archivo PHP y ejecutarlo localmente (en su ordenador, no en el servidor web) con el siguiente contenido:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
</head> 
<body> 
<form method="post" accept-charset="utf-8"> 
    <input type="text" name="clear"/> 
    <input type="submit" name="submit" value="generate" /> 
</form> 

<?php 
header("Content-Type: text/html; charset=utf-8"); 

if (isset($_POST['clear']) && $_POST['clear'] != '') { 
    $cl = $_POST['clear']; 
    $pw = crypt($cl, base64_encode($cl)); 
    echo $pw; 
} 
?> 
</body> 
</html> 

generalmente pongo mi archivo .htpasswd en un directorio llamado/htpasswd/fuera del directorio de contenido web, como AuthUserFile /home/www/usr122/files/htpasswd/.sportsbar_reports_htpasswd (y no en la carpeta de contenido web /home/www/usr122/html/htpasswd/) y renombre el archivo .htpasswd para lo que es, por ejemplo .sportsbar_reports_htpasswd

El archivo de contraseñas en sí debe ser similar

testusername:dGATwCk0tMgfM 

donde el nombre de usuario es testusername y la contraseña es testuserpassword

Cuestiones relacionadas