Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andersonseifert

Avaliação Formulario Login

Recommended Posts

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

http://pastebin.com/xwJKhyVK

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>";
   
    }
 
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

https://onedrive.live.com/redir?resid=424654D1B1563617!205&authkey=!AAMzoVm23VkTJSs&v=3&ithint=photo%2cjpg

 

é isso mesmo ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 :

 

http://prntscr.com/96thnl

 

Linha : $senhaHash = password_hash($senha, PASSWORD_DEFAULT);

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
    • Por juniormatrix
      Olá
       
      Achei esse script aqui no fórum mesmo:
       
      $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um.

      Tem como fazer? 
       
      Se alguém puder ajudar, fico muito grato.
    • Por estanieski_poa
      Estou com um sistema antigo, desenvolvido em Delphi 7+Oracle10g.
       
      O sistema funciona corretamente, mas ele começou a ficar solcititando usuário e senha do Oracle quando realizo pesquisar ou inserções no sistema.
       
      Como desativo essa solicitação?
    • Por eduardodsilvaq
      Erro retornado no console do navegador: 400 bad request
      Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
      if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
      Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
       
      Código utilizado:
       
      Javascript
      function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
      add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
      <form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form>&nbsp; <h3><div id="status"></div></h3>  
    • Por Alvaro_php
      Pessoal boa noite
      Tenho um sistema em Visual Basic 6 que utiliza um documento do Word que é enviado para as empresas, onde tenho algumas flags que são utilizadas para colocar no nome da empresa e endereço e que são enviadas via email

      Estou conseguindo converter esse documento do WORD em PDF sem problemas
      Private Sub ConverterWordParaPDF()

          On Error GoTo TrataErro
          Dim ObjWord2 As Word.Application
          Dim ObjWordDoc2 As Word.Document
          
          Set ObjWord2 = CreateObject('Word.Application')
          ObjWord2.Visible = False
          ObjWord2.DisplayAlerts = wdAlertsNone

          Set ObjWordDoc2 = ObjWord2.Documents.Open(App.Path + '\Documento.doc', True, True, False, Replace(Replace(Replace(Replace(Rs(1), '/', ''), '-', ''), '.', ''), '_', ''))

          ObjWordDoc2.ExportAsFixedFormat OutputFileName:= _
          App.Path + '\Documento.pdf', ExportFormat:=wdExportFormatPDF, _
          OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
          wdExportAllDocument, from:=1, To:=1, Item:=wdExportDocumentContent, _
          IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
          wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
          True, UseISO19005_1:=False
              
          ObjWord2.Visible = False
          ObjWord2.Quit (False)
          Set ObjWord2 = Nothing
      Exit Sub
      TrataErro:
        msgbox 'Erro ao converter o documento'
      End Sub

      Porém a senha que coloquei no word, não está ficando no arquivo pdf após a conversão, e também não achei nenhuma opção para incluir uma senha nesse novo arquivo

      Não estou usando o Crystal e o documento do word é um documento qualquer que o cliente usa, por isso que não da para utilizar o crystal

      Alguém sabe como que eu poderia fazer essa conversão e colocar a senha nesse novo arquivo ou teria alguma outra forma de converter esse documento para pdf que desse para colocar a senha

      Desde já agradeço a todos
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.