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 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
    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
×

Informação importante

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