Qual é a melhor maneira de proteger a senha da pasta/página usando PHP sem um nome de usuário ou nome de usuário

StackOverflow https://stackoverflow.com/questions/286938

Pergunta

Qual é a melhor maneira de proteger a pasta de proteção de senha usando PHP sem um banco de dados ou nome de usuário, mas usando. Basicamente, tenho uma página que listará contatos para a organização e precisam proteger a senha da pasta sem ter contas de todos os usuários. Apenas uma senha que obtém alterações de vez em quando e distribuída ao grupo. Entendo que não é muito seguro, mas nunca mais gostaria de saber como fazer isso. Da melhor maneira.

Seria bom se a senha for lembrada por um tempo depois que o usuário o inseriu corretamente.


Estou fazendo aproximadamente o que David Heggie sugeriu, exceto sem biscoitos. Parece inseguro como o inferno, mas provavelmente é melhor ter uma proteção de senha ruim do que nenhum.

Isso é para o site interno, onde as pessoas teriam um tempo para se lembrar de seu login e senha e nunca passariam inscrever-se Processo ... a menos que seja realmente fácil, eles não usariam o sistema.

Eu queria ver outras soluções para esse problema.

Com a base de usuários consistindo em pessoas não muito experientes em tecnologia, quais são outras maneiras de fazer isso.

Foi útil?

Solução

Você poderia usar algo assim:

//access.php

<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';

session_start();
if (!isset($_SESSION['loggedIn'])) {
    $_SESSION['loggedIn'] = false;
}

if (isset($_POST['password'])) {
    if (sha1($_POST['password']) == $password) {
        $_SESSION['loggedIn'] = true;
    } else {
        die ('Incorrect password');
    }
} 

if (!$_SESSION['loggedIn']): ?>

<html><head><title>Login</title></head>
  <body>
    <p>You need to login</p>
    <form method="post">
      Password: <input type="password" name="password"> <br />
      <input type="submit" name="submit" value="Login">
    </form>
  </body>
</html>

<?php
exit();
endif;
?>

Em seguida, em cada arquivo que você deseja proteger, coloque no topo:

<?php
require('access.php');
?>
secret text

Não é uma solução muito boa, mas pode fazer o que você quer

Editar

Você pode adicionar uma página de logout.php como:

<?php
    session_start();
    $_SESSION['loggedIn'] = false;
?>
You have logged out   

Outras dicas

Supondo que você esteja no Apache:

http://httpd.apache.org/docs/1.3/howto/htaccess.html#auth

Se você deseja evitar cookies, sessões e não quiser brincar com arquivos .htaccess, também pode fazer a autenticação HTTP Soley com PHP:

http://www.php.net/manual/en/features.http-auth.php

Você pode codificar a senha no arquivo e alterá -la conforme necessário, ou incluí -la de um arquivo não no seu diretório web_accessible.

A desvantagem é que você não tem a capacidade de formatar a tela "Login" - será uma caixa de diálogo de autenticação HTTP padrão

Duvido que isso contasse como o melhor Wasy de fazer isso, mas funcionaria. E como a segurança não parece ser um grande problema para você, o fato de que assim é tão inseguro quanto o inferno provavelmente não o incomodará.

Tenha uma página Login.php que pega uma senha e, em seguida, define um cookie se os detalhes do login estiverem corretos. Cada arquivo php pode verificar a existência do cookie para determinar se o usuário está ou não "logado" ou não e exibir informações de acordo.

login.php
...
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
    setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
    setcookie('loggedin', 'false', time() - 1200, '/url/');
    // display a login form here
}
etc

Cada página "protegida" veria este cookie:

if(isset($_COOKIE['loggedin'])) {
    if($_COOKIE['loggedin'] == 'true') {
        $showHidden = true;
    } else {
        $showHidden = false;
    }
} else {
    $showHidden = false;
}

Tenho certeza que você tem a ideia (altamente insegura) ...

Bem, já que você conhecer É inseguro começar, você pode armazenar uma senha em um arquivo de texto em algum lugar do seu servidor da Web. Quando alguém acessa a página, você pode mostrar um formulário que solicita uma senha. Se a senha corresponder ao que está no arquivo de texto, você recarregue a página e exiba as informações. O uso do arquivo de texto permitirá alterar a senha sem precisar modificar a página que eles estão acessando quando você deseja alterá -la. Você ainda estará enviando texto simples para todos os lugares, a menos que esteja usando o SSL. Deixe -me saber se você precisar de algum código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top