Publicidade

Gabriel Heming

Moderadores
  • Total de itens

    3.162
  • Registro em

  • Última visita

  • Dias vencidos

    61

Gabriel Heming venceu o dia em Janeiro 30

Teve o conteúdo mais curtido

Reputação

584 Incrível

Sobre Gabriel Heming

  • Classificação
    Especialista em Desenvolvimento de Software
  • Data de Nascimento 05-05-1989

Informações Pessoais

  • Sexo
    Masculino
  • Interesses
    PHP, C#/.NET, Microsoft Dynamics AX, JavaScript, Java, OOP, Padrões de Arquiteturas e de Projeto, Engenharia de Software.

Últimos Visitantes

43.529 visualizações
  1. Movido: JavaScript -> HTML e CSS
  2. Se a sua div principal não se expande, é porque há algum definição que limita/bloqueia o tamanho da div ou a div interna possui um comportamento diferente da externa (position, por exemplo). Exceto, por uma particularidade: div's pais, com clear:both, não se expandem quando uma div filha com float se expande. Ai sim, o uso de overflow (auto ou hidden, indiferente) resultaria na expansão da div. Pode verificar um pouco mais abaixo: http://stackoverflow.com/questions/18025818/clearboth-not-working-css-floats
  3. Acredito que o seu problema seja apenas a diretiva max_input_vars, a qual deve ser alterada no php.ini. Entretanto, sugiro que verifique as seguintes diretivas, pois, uma sempre influenciará na outra. post_max_size; max_input_vars; max_execution_time. post_max_size indica o tamanho máximo que podem ser utilizados para dados enviados por POST. Caso passar desse tamanho, os dados excedentes são ignorados. Default 8M, aumente para 128M.https://secure.php.net/manual/en/ini.core.php#ini.post-max-size max_input_vars indica a quantidade máxima de variáveis que podem ser enviadas do client para o servidor (seja em GET, POST ou COOKIES). Default 1000 (acredito que o seu esteja para 100), aumente para 1000 ou 10000, conforme o que já está configurado. https://secure.php.net/manual/en/info.configuration.php#ini.max-input-vars max_execution_time define o tempo máximo que um script PHP pode ser executado. Scripts como relatórios podem demorar mais que a consulta normal para uma página. Default 30, aumente o quanto for necessário. Se o tempo for variado, pode incluir 0 para ser tratado como "sem limite".https://secure.php.net/manual/en/info.configuration.php#ini.max-execution-time https://pt.stackoverflow.com/questions/169233/pdf-não-gera-todas-as-páginas-com-mpdf
  4. @gabrieldarezzo Infelizmente, a Date\Time ignora locale, logo, não traduz para o português. ='( @marsolim depende de como está instalado no servidor. Caso esteja no linux, use o comando 'locale -a'. Exibirá todos os locales e a forma que deve ser utilizado.
  5. E, para quem quiser se aprofundar mais, leiam os artigos de Scott Arciszewski , ele é um dos "cabeças" no PHP quando se trata de segurança. Alguns que podem ser de interesse: https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016 https://paragonie.com/blog/2015/04/secure-authentication-php-with-long-term-persistence
  6. Apenas para complementar a parte sobre Timing-attack, sugiro a leitura do seguinte link: http://blog.ircmaxell.com/2014/11/its-all-about-time.html
  7. https://secure.php.net/manual/en/tutorial.forms.php
  8. @marsolim Não é apenas a quantidade de caracteres que influência. Existem N fatores. Algumas das questões que posso afirmar: - Blowfish é o algorítimo mais poderoso que o PHP possui no momento (Argon2 está planejado para ser lançado com o PHP 7.3); - Cada identificador utilizado pelo blowfish ($2a$, $2x$ e $2y$), gerará um tipo de hash diferente; - password_hash cria automaticamente um SALT forte (caso nenhum SALT seja fornecido) para melhorar ainda mais a segurança; - password_hash tem proteção contra força bruta (link 1 e link 2) e timing attack. Sobre colisão, todo algorítimo é passível de colisão (há quem diga que não, entretanto, vejo apenas como uma questão de "possível, mas improvável"), o que muda é a probabilidade. MD5 tem uma maior incidência por ser do tipo footprint (impressão digital). O password_hash, por outro lado, gerará hash's aleatórios, determinados pelo salt utilizado. O salt é parte essencial do hash gerado (está dentro dos 60 caracteres). Já que, a probabilidade de se gerar uma colisão sem salt, ou com salt fixo, é alta, com salt aleatório é ainda mais ainda. Algumas questões de segurança, a mais, podem ser verificas no link abaixo que explica sobre o identificador '$2y$': http://www.php.net/security/crypt_blowfish.php
  9. Primeiro, MD5 foi criado para ser uma criptografia do tipo hash (unidirecional) para criar um footprint (impressão digital) de um conjunto de caracteres/bytes (certificados digitais, por exemplo). Entretanto, foram encontradas diversas falhas nele, que, hoje em dia, ele não é mais utilizado para o propósito original. Tem vários materiais sobre a (in)segurança do MD5. https://en.wikipedia.org/wiki/MD5#Security https://security.stackexchange.com/questions/19906/is-md5-considered-insecure https://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function Não ser retornável, não quer dizer impossível de ser quebrado. O pensamento "linear" de "quebrar" é possuir um hash e retorná-lo ao estado de origem. Entretanto, não é isso que ocorre. O MD5 é tão rápido de ser gerado, que pode-se gerar biliões de combinações em pouco espaço de tempo. Você não precisa saber o HASH original, só precisa encontrar um que, quando gerado, seja igual ao outro. Lembrando que MD5 gera colisões, ou seja, conjuntos de caracteres diferentes podem gerar hashs iguais. https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities https://en.wikipedia.org/wiki/Collision_attack A forma mais conhecida de "reverter" um MD5 é através de uma rainbow table. Veja por si só no link abaixo https://crackstation.net/ Ou pesquise no google sobre "MD5 Reverse". No link abaixo você pode ler um pouco sobre como funciona o password_hash: https://pt.stackoverflow.com/questions/194929/password-hash-php/194950#194950 Fale isso para o CERT... http://www.kb.cert.org/vuls/id/836068 Uma das primeiras falhas do MD5 foi encontrada em 1996: ftp://ftp.rsasecurity.com/pub/cryptobytes/crypto2n2.pdf Como pode dizer que é seguro?
  10. Em primeiro lugar, compreenda o que é HASH e o que é CRIPTOGRAFIA. http://stackoverflow.com/a/4948393/1628790 Em segundo lugar, não deve ser utilizado md5 para hash de senhas. PHP possui a biblioteca password. Outra, que o login do usuário não deve ter hash. Para inserir/salvar a senha, deve-se utilizar a função password_hash: $usuario = $_POST['usuario']; $senha = password_hash($_POST['senha']); //e salve no SGBD Para realizar o login, deve-se utilizar a função password_verify. O código em questão deve ser similar a: <?php $usuario = $_POST['usuario']; $pdo = new \PDO(/** dados de conexão**/); $statement = $pdo->prepare('SELECT * FROM user WHERE login = ?'); $statement->execute([$usuario]); $row = $statement->fetch(PDO::FETCH_ASSOC); if(!$row || !password_verify($_POST['senha'] , $row['password'])) { throw new \RuntimeException('Usuário/Senha não confere');//usuário pode ou não existir, mas a mensagem é genérica para evitar força bruta } echo 'usuário logado'; Somente reforçando, não utilize MD5, é falho e inseguro.
  11. pdo

    @EdCesar , mysql permite o insert similar ao update. http://stackoverflow.com/a/861729/1628790 @ewerton_19 Adicione em um block try/catch. Eu, particularmente, já utilizei da forma que você está tentando fazer (depende do SGBD utilizado): try { $res = $tonn->prepare("INSERT INTO fun_online SET userid = :userid, actvtime = :actvtime, place = :place, placedet = :placedet"); $res->bindParam(':userid', $uid, PDO::PARAM_STR); $res->bindParam(':actvtime', $ttime, PDO::PARAM_STR); $res->bindParam(':place', $place, PDO::PARAM_STR); $res->bindParam(':placedet', $plclink, PDO::PARAM_STR); $res->execute(); } catch (\PDOExpcetion $exception) { $res = $tonn->prepare("UPDATE fun_online SET actvtime = :actvtime, place = :place , placedet = :placedet WHERE userid = :userid"); $res->bindValue(':actvtime', $ttime, PDO::PARAM_STR); $res->bindValue(':place', $place, PDO::PARAM_STR); $res->bindValue(':placedet', $plclink, PDO::PARAM_STR); $res->bindValue(':userid', $uid, PDO::PARAM_STR); $res->execute(); }
  12. Sua classe não possui utilidade aplicada. A chamada, por si só, seria a mesma que utilizar a PDO nativamente. Ou seja, isso: $conexao_pdo = Conexao::Conectar('rh', 'localhost', 'root', 'alexalannunes', 'mysql'); é o mesmo que isso: $conexao_pdo = new PDO('mysql:host=localhost;dbname=rh', 'root' , 'alexalannunes'); A PDO é uma biblioteca bem completa, mas, sempre há algo que nela pode ser atribuído. Nesse caso, o que a sua classe está atribuindo para a PDO que ela não faz por si só?
  13. É em linha de comando. Não uso o sublime, mas o que ele quis dizer é que ele grava a saída e abre no sublime.
  14. Você pode adicionar colunas a sua grid e mapear as propriedades de um objeto para cada coluna. Está utilizando a grid padrão do .NET ou alguma biblioteca (DevExpress, etc...)?
  15. Apenas uma consideração. Ninguém irá ler seu código, é muita coisa. Seja objetivo. Quanto aos seus erros, todos os problemas são autoexplicativos: Você não pode alterar um construtor já definido. Idem ao de cima. Retorno de valor por referência foi depreciado. Ou seja, não deve mais ser utilizado.