Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Pessoal esse é meu formulario atual de login, estava pesquisando na net e hoje percebo que existe inumeras possibilidades de se criar
qual a ideia de voces diante desses code , favor deem sujestoes e se alguem tiver um exemplo que seja melhor em termo de "Segurança"
cite exemplos :
Cadastro.php
http://pastebin.com/BryaGa9Y
Logar.php
Só pra começar:
Olá galera ta saindo meu PDO ^^ , olhem como esta o cadastro :
cadastro.php
if(isset($_REQUEST["post_back"])){
if(empty($_POST["nome"]) || empty($_POST["email"]) || empty($_POST["senha"])){
echo "<script>alert('Preencha todos os campos antes de enviar seu cadastro!');</script>";
}else{
$tb = $conn->prepare("insert into usuario(nm_usuario, email_usuario, senha_usuario) values(:nome, :email, :senha)");
$tb->bindParam(":nome", $_POST["nome"], PDO::PARAM_STR);
$tb->bindParam(":email", $_POST["email"], PDO::PARAM_STR);
$tb->bindParam(":senha", $_POST["senha"], PDO::PARAM_STR);
$tb->execute();
$tb = null;
echo "<script>alert('Cadastro efetuado com sucesso!\\nFaça seu login agora');document.location='index.php';</script>";
}
}
Creio que é isso, meu cadastro to pensando em usar bcrypt o que acham ?
Da uma olhada nesse artigo sobre api de senhas: http://blog.thiagobelem.net/php-5-5-api-de-senhas/
Parceiro foi isso que usei, usei a api Hash
deem a avaliação de voces :
(Está funcionando dessa forma q fiz)
require("config.php");
if(isset($_REQUEST["post_back"])){
$tb = $conn->prepare("select id_usuario from usuario where email_usuario=:email and senha_usuario=:senha");
$salt = $_POST["senha"];
$custo = '08';
$hash = crypt($senha, '$2a$' . $custo . '$' . $salt . '$');
$tb->bindParam(":email", $_POST["email"], PDO::PARAM_STR);
$tb->bindParam(":senha", $hash, PDO::PARAM_STR);
$tb->execute();
$l = $tb->fetch(PDO::FETCH_ASSOC);
$tb = null;
if(!empty($l)){
$_SESSION["usuario"] = $l["id_usuario"]; header("Location: dados.php");
}else{
echo "<script>alert('Login Falhou');</script>";
}
}
?>Outra coisa é viavel deixar dessa forma ?
formulario + validção do login tudo na mesma pagina :
Vc pode pensar também em tratar erros durante a execução da query. Vai que por algum motivo os comando não executam. Vc pode criar uma variavel para receber: "$tb->execute();", depois é só verificar se retornou verdadeiro rsrs
você pode pensar também em tratar erros durante a execução da query. Vai que por algum motivo os comando não executam. você pode criar uma variavel para receber: "$tb->execute();", depois é só verificar se retornou verdadeiro rsrs
Ruan mas até ai como esta em termo de segurança ?
posso deixar na mesma magina o formulario + validação login ?
O que vai definir se pode ou não é a sua coragem em atualizar depois esses códigos. Eu prefiro deixar tudo separado o máximo possível. Quanto a parte de segurança, o PDO e Prepared Statments é uma mão na roda rsrs ;)
O que vai definir se pode ou não é a sua coragem em atualizar depois esses códigos. Eu prefiro deixar tudo separado o máximo possível. Quanto a parte de segurança, o PDO e Prepared Statments é uma mão na roda rsrs ;)
E essa criptografia que estou usando ta bacana ?
Eu faço a criptografia de senha sem gerar o custo e o salt, com o padrão default:
<?php
$senha = $_POST['senha'];
$senhaHash = password_hash($senha, PASSWORD_DEFAULT);
...
$tb->bindParam (':senha', $senhaHash);
...
?>
:D
>
Eu faço a criptografia de senha sem gerar o custo e o salt, com o padrão default:
<?php
$senha = $_POST['senha'];
$senhaHash = password_hash($senha, PASSWORD_DEFAULT);
...
$tb->bindParam (':senha', $senhaHash);
...
?>
:D
De uma olhadinha olha como ele cria a senha no banco :
Senha cadastrada : Sistema@teste1234567
Senha gerada dentro banco : *0
é isso mesmo ?
posso deixar na mesma magina o formulario + validação login ?
Se você habilitar todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2, verá que não pode.
O session_start() vai gerar erro por estar depois de códigos HTML
Acho ótimo que você esteja preocupado em desenvolver um sistema bom. Mas antes recomendo que siga todas as Boas Práticas, principalmente habilitando todas as exibições de erro
>
Se você habilitar todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2, verá que não pode.
O session_start() vai gerar erro por estar depois de códigos HTML
Acho ótimo que você esteja preocupado em desenvolver um sistema bom. Mas antes recomendo que siga todas as Boas Práticas, principalmente habilitando todas as exibições de erro
Obrigado, Beraldo vou separar o codigo php do html e mudar o caminho das acition, VLW pera diga dos tratamento dos erros.
>
Se você habilitar todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2, verá que não pode.
O session_start() vai gerar erro por estar depois de códigos HTML
Acho ótimo que você esteja preocupado em desenvolver um sistema bom. Mas antes recomendo que siga todas as Boas Práticas, principalmente habilitando todas as exibições de erro
Dessa forma : http://pastebin.com/pqU4La99 ?
>
Eu faço a criptografia de senha sem gerar o custo e o salt, com o padrão default:
<?php
$senha = $_POST['senha'];
$senhaHash = password_hash($senha, PASSWORD_DEFAULT);
...
$tb->bindParam (':senha', $senhaHash);
...
?>
:D
Erro :
Linha : $senhaHash = password_hash($senha, PASSWORD_DEFAULT);
password_hash está disponível a partir do PHP 5.5.
Se você usa 5.4, terá de voltar à forma anterior.
Mas o melhor a fazer é atualizar pro 5.6 (aliás, logo sai o 5.7 e o PHP 7)
>
password_hash está disponível a partir do PHP 5.5.
Se você usa 5.4, terá de voltar à forma anterior.
Mas o melhor a fazer é atualizar pro 5.6 (aliás, logo sai o 5.7 e o PHP 7)
Complicado que a Locaweb esta na 5 ainda ai nao adianta :(
A própria Locaweb mostra como mudar a versão do PHP.
Inclusive é suportado o 5.5 e até o 5.6
http://wiki.locaweb.com.br/pt-br/Como_alterar_a_vers%C3%A3o_do_PHP
É recomendável que você utilize o PDO para uma maior segurança. e também que utilize filtros nos POST e GETS como
$senha = filter_input (INPUT_POST,'senha',FILTER_SANITIZE_MAGIC_QUOTES);
afim de evitar SQL Injection