terça-feira, 3 de junho de 2014

Try...Catch...

Apagar registros por atualização direta em Genexus é uma aventura. Isso porque esse mecanismo não realiza o tratamento de integridade referencial, e se o registro é utilizado por outro, ocorre um erro/interrupção do programa, que sempre assusta bastante quem o recebe. 

Sempre nesses casos é preferivel utilizar Business Component, mas a atualização direta ainda guarda seus encantos principalmente quando se trata de um melhor desempenho.

Uma forma de evitar que o erro apareça nessa situação é envolve-la em um mecanismo de tentativa de execução, inexistente no Genexus, mas possível pela inclusão do código nativ
o. Alias esta prática é bem interessante e util em muitas ocasiões.

csharp try {
 for each
 where ClienteId = &clienteId
    delete
 endfor


csharp } catch (Exception e) { 
    msg('Nao foi possivel completar a operacao')
csharp }

Nao seria muito bom se houvesse já esse simples recurso de programação disponibilizado no Genexus? Eu acho que sim.

domingo, 1 de junho de 2014

Senhas seguras?

Por mais que se tente proteger informações sempre teremos curiosos com tempo e energia suficientes para espionar, invadir, quebrar o sigilo e pior, encontrar coisas importantes.  Segurança é assunto sério e proteger credenciais de acesso de pessoas, além de outras informações relevantes, deve ser uma meta a ser alcançada, visto que esta é uma das principais vulnerabilidades que estamos sujeitos na web (segundo a OWASP).

Uma estratégia é que pelo menos que os invasores tenham muito trabalho para encontrar as coisas, ou mesmo, que as informações sejam transmitidas encriptadas para confundir e atrasar.

Uma estrategia bastante interessante que ilustra bem essa história de confundir, é quebrar as senhas em pedaços, armazenando-a em locais distintos.  Uma idéia simples, e acredito, bastante eficiente.

Abaixo dois links que tratam desse assunto.


Portanto, chega de quebra-galhos, vamos melhorar a segurança dos nossos sistemas.