Como saber o meu endereço IP no Ubuntu, dentro da minha rede local.

É possível descobrir o seu endereço IP de várias formas. As que eu mais uso são as seguintes:

Pelo gerenciador de redes

Normalmente, na barra de status, à esquerda, há um pequeno ícone que indica o estado da conexão. É possível conectar ou desconectar-se da rede. O seu formato varia de acordo com o tema que você estiver usando.

Ao clicar nele, com o botão direito do mouse, é possível ver uma lista de opções.

Lista de opções do gerenciador de redes

Selecione “Informações da conexão” e aguarde a abertura da janela de informações.

A 6a. linha mostra o seu Endereço IP.

Na linha de comando

Abra um terminal e entre o comando:
ifconfig
Semelhante ao comando ipconfig no Windows, ele fornece informações sobre as suas conexões, no console. No caso, aqui, a rede usada é Wi-Fi. Portanto, a informação desejada se encontra na seção wlan0. Adapte esta informação ao seu caso.

Previna-se de ataques SQL Injection

Este artigo explica o básico do SQL Injection (Injeção de SQL), com um exemplo que mostra como ele se dá e provê métodos de prevenção a estes ataques.
Tal como o nome sugere, este ataque pode ser feito através de queries SQL. Muitos programadores não têm idéia de como um agressor pode usar uma query. Basicamente, um SQL Injection pode ser feito em uma aplicação web que não efetue a filtragem apropriada dos dados fornecidos pelos usuários, confiando em tudo que ele digita – o que pode ser uma requisição SQL não prevista pelo idealizador do software.
Os exemplos mencionados aqui foram testados com os seguintes softwares:

  • PHP 5.3.3-7
  • Apache/2.2.16
  • Postgresql 8.4

Ainda que você não esteja fazendo uso de qualquer um deles (claro que MySQL está incluído), os conceitos se aplicam a qualquer situação que envolva um website com formulários a ser preenchidos pelos visitantes e que dão acesso ao banco de dados.

Um exemplo de SQL Injection

Vamos começar pelo fato de que muitas aplicações web têm uma página de autenticação. Vamos usar o código seguinte, como um exemplo:

index.html

<html>
<head><title>SQL Injection Demo</title></head>
<body onload="document.getElementById('user_name').focus();" >
<form name="login_form" id="login_form" method="post" action="login.php">
<table border=0 align="center" >
<tr>
<td colspan=5 align="center" ><font face="Century Schoolbook L" > Login Page </font></td>
</tr>
<tr>
<td> User Name:</td><td> <input type="text" size="13" id="user_name" name="user_name" value=""></td>
</tr>
<tr>
<td> Password: </td><td> <input type="password" size="13" id="pass_word" name="pass_word" value=""></td>
</tr>
<tr>
<td colspan=2 align="center"><input type="submit" value="Login"> </div></td>
</tr>
</table>
</form>
</body>
</html>

Ao fornecer o nome de usuário (user_name) e senha (pass_word), seus valores são postados em login.php via HTTP_POST.

login.php

<?php
$Host= '192.168.1.8';
$Dbname= 'john';
$User= 'john';
$Password= 'xxx';
$Schema = 'test';

$Conection_string="host=$Host dbname=$Dbname user=$User password=$Password";

/* Conecta ao banco de dados e pede uma nova conexão*/
$Connect=pg_connect($Conection_string,$PGSQL_CONNECT_FORCE_NEW);

/* Erro ao verificar a string de conexao */
if (!$Connect) {
echo "Falha ao conectar ao banco de dados";
exit;
}

$query="SELECT * from $Schema.users where user_name='".$_POST['user_name']."' and password='".$_POST['pass_word']."';";

$result=pg_query($Connect,$query);
$rows = pg_num_rows($result);
if ($rows) {
echo "Sucesso ao logar!";
}
else {
echo "Não foi possivel logar.";
}
?>

Pois bem. A linha 19, no código acima, é vulnerável a uma ataque (me refiro à linha que começa com $query="SELECT *). Trata-se de uma requisição cujo objetivo é encontrar no banco de dados o nome e a senha fornecidos pelo usuário. Tudo vai funcionar bem se forem fornecidos dados corretos e válidos. Contudo, um usuário malicioso pode fornecer outro tipo de informação ao sistema.
No campo nome do usuário, em vez de digitar o que se espera, ele pode digitar o seguinte:

' or 1=1;--

e deixar o campo senha em branco.
Ao clicar em submit, as informações serão postadas em login.php, onde a requisição será vista como:

SELECT * from test.members where user_name='' or '=';--' and password='';

O que se vê acima é uma requisição SQL plenamente válida. No postgresql o -- é um indicador de início de um comentário, ou seja, tudo o que vier depois deste caractere será ignorado. O que será executado é o seguinte:

select * from test.members where user_name='' or '=';

o que será verdadeiro (true) e retornará a mensagem “Login Success”.
Caso o agressor conheça os nomes das tabelas contidas no banco de dados, ele poderá apagar as tabelas com a seguinte entrada, no campo nome do usuário:

';drop table test.lop;--

Alguns scripts de autenticação tendem a agir da seguinte forma:

  • Guardar as senhas no formato md5.
  • Selecionar primeiro o nome,senha no banco de dados, com base no que foi fornecido pelo digitador.
  • Formatar em md5 a senha fornecida e compará-la com a senha no banco.
  • caso sejam iguais, a autenticação segue adiante.

Vejamos como contornar isto, no caso de a query ser vulnerável a um SQL-Injection.

login.php

<?php
$Host= '192.168.1.8';
$Dbname= 'john';
$User= 'john';
$Password= 'xxx';
$Schema = 'test';

$Conection_string="host=$Host dbname=$Dbname user=$User password=$Password";

/* Conecta ao banco de dados e pede nova conexão */
$Connect=pg_connect($Conection_string,$PGSQL_CONNECT_FORCE_NEW);

/* Erro ao verificar a string de conexao */
if (!$Connect) {
echo "Falha ao conectar ao banco de dados";
exit;
}

$query="SELECT * from $Schema.users where user_name='".$_POST['user_name']."' and password='".$_POST['pass_word']."';";

$result=pg_query($Connect,$query);
$rows = pg_num_rows($result);
if ($rows) {
echo "Sucesso ao logar!";
}
else {
echo "Erro ao logar.";
}
?>

Agora digite o seguinte no campo nome de usuário:

' UNION ALL SELECT 'laksh','202cb962ac59075b964b07152d234b70

em seguida, entre “123” no campo senha e clique em submit, sabendo que md5(123) é igual a 202cb962ac59075b964b07152d234b70.
Agora, a query vai se expandir para

SELECT user_name,password from test.members where user_name='' UNION ALL SELECT 'laksh','202cb962ac59075b964b07152d234b70';

e quando for executada, o banco de dados vai retornar ‘laksh‘ como nome de usuário e ‘202cb962ac59075b964b07152d234b70‘ como senha. E, uma vez que postamos “123”, no campo pass_word, o strcmp vai retornar 0 e a autenticação ocorrerá com sucesso.
O que se vê, acima, são algumas das inúmeras possibilidades de ataques SQL Injection. Seguem, abaixo, algumas coisas que podem ser feitas para reduzir as possibilidades de ataques:

  • Sempre verificar o que é digitado (nunca confie no que o usuário vai digitar);
  • Se você espera que se digite um nome de usuário em um determinado campo, certifique-se de que ele contenha apenas caracteres alfanuméricos;
  • Elimine ou filtre caracteres especiais e entradas possivelmente maliciosas dos usuários;
  • Use expressões preparadas para executar as requisições;
  • Não permita que várias requisições sejam feitas em uma única expressão;
  • Não deixe vazar informações sobre o banco de dados através das mensagens de erro, etc…

Esta é uma tradução livre do artigo original, de Lakshmanah Ganapathy, que pode ser encontrado http://miud.in/1aYd

Ubuntu — Atalhos de teclado

As teclas de atalho são a maneira mais produtiva de se comunicar com a interface gráfica Unity, no Ubuntu.
O Unity foi pensado para ser um ambiente desktop mais eficiente e você pode aumentar exponencialmente a sua produtividade com o uso mais intensivo das teclas de atalho — uma vez que elas dispensam você da “ginástica” de movimentar constantemente as mãos entre o teclado e o mouse.
Uma forma de ver rapidamente as teclas de atalho é manter a tecla Super pressionada por 3 segundos — uma tabela será exibida na tela.
Veja a lista de atalhos do Unity:

  1. Alt + F4 — Fecha a janela atual (Eu sei, esta você já sabia…)
  2. Alt + F2 — Abre uma caixinha de texto para você executar um comando
  3. Alt + Tab — Alterna entre as janelas dos aplicativos abertos
  4. Alt + Shift + Tab — Alterna entre as janelas – só que em ordem reversa
  5. Alt + tab +  (seta à direita) — Alterna para a próxima janela à direita
  6. Alt + tab +  (seta à esquerda) — Alterna para a próxima janela à esquerda
  7. Alt + ‘ — Alterna entre as janelas do aplicativo atual
  8. Super + S — Ativa o alternador das áreas de trabalho
  9. Super + W — Exibe todas as janelas abertas dentro da área de trabalho atual
  10. Ctrl + Alt +     — Alterna entre as áreas de trabalho
  11. Ctrl + Alt + Shift +     — Move a janela atual para uma outra área de trabalho (depende da direção da seta que você for usar)
  12. Ctrl + Super + D — Esconde todas as janelas na área de trabalho ativa
  13. Ctrl + Alt + L — Bloqueia (lock) a tela – útil quando for se ausentar para tomar um cafezinho
  14. Ctrl + Alt + Del — Log out – Encerra a sessão
  15. Alt + F7 +     — Move a janela atual
  16. Alt + F8 +     — Redimensiona a janela atual
  17. Ctrl + Alt + T — Abre um terminal
  18. Agora, combine estas teclas com o uso do mouse:

  19. Alt + Botão esquerdo do mouse — Move a janela atual – Arraste o mouse enquanto mantém o botão esquerdo pressionado para movimentar a janela sobre a qual se encontra o ponteiro
  20. Alt + Botão do meio do mouse — Redimensiona a janela atual – Arraste o mouse para redimensionar a janela. Em alguns sistemas funciona com o botão direito do mouse

Atalhos do HUD

O HUD (Heads Up Display), ainda tem mais estes atalhos de teclado:

  • Alt (toque rápido) — Abre o HUD
  • À medida em que você vai digitando… — uma lista de itens relacionada aos termos fornecidos vai aparecendo
  • Setas direcionais — Seleciona entre os resultados
  • Esc (ou Alt) — Termina e sai do HUD

Teclas de atalho do Dash

Estas são as teclas de atalho relativas ao Dash:

  • Super (mantendo pressionada) — Mostra os atalhos de teclado
  • Super (toque rápido) — Abre o Dash
  • Super + A — Exibe a lente (lens) de aplicativos
  • Super + F — Exibe a lente de arquivos
  • Super + M — Exibe a lente de músicas
  • Super + V — Exibe a lente de vídeos
  • Super + C — Exibe a lente de fotos
  • Super + G — Exibe a lente Gwibber
  • Ctrl + Tab — Alterna entre as lentes
  • Ctrl + Shift + Tab — Alterna reversivamente entre as lentes
  • Enter — Abre o item selecionado
  • Clique direito do mouse sobre o item — Exibe uma prévia

O Lançador

Teclas de atalho relativas ao Lançador (Launcher):

  • Alt + F1 — Ativa a navegação por teclado
  • Super + Tab — Alterna entre as aplicações abertas
  • Super + Shift + Tab — Alterna no sentido reverso entre as aplicações abertas
  • Super + (1 a 9) — Seleciona entre as aplicações, por número
  • Super + Shift + (1 a 9) — Abre a aplicação selecionada em nova janela
  • Super + T — Exibe o conteúdo da lixera

Como tirar fotos da tela, no Ubuntu

Mesmo para novatos, tirar fotos da sua tela atual (screenshots) pode ser de grande valia, quando se quer mostrar uma determinada situação para um suporte à distância. Quem escreve manuais, guias, tutoriais também faz uso intenso deste recurso.
Veja como é fácil:

  • Print Screen — Tira a foto da tela
  • Alt + Print Screen — Captura a janela atual
  • Shift + Print Screen — Captura uma área – ou seja, permite ao usuário selecionar uma área da sua tela para ser “fotografada”
  • Ctrl + Print Screen — Captura uma imagem integral da tela e a envia para a área de transferência (clipboard) – você pode inserir a imagem em um outro aplicativo, com suporte a imagens, usando o atalho Ctrl + V
  • Ctrl + Print Screen — Captura a janela atual para a área de transferência
  • Ctrl + Shift + Print Screen — Permite selecionar uma área a ser capturada para a área de transferência

Personalize o Unity – tamanho dos ícones

O Unity trouxe, em relação às interfaces gráficas anteriores no Ubuntu, uma novidade: O lançador (launcher). A partir dele, é possível ter acesso rápido aos seus aplicativos favoritos. Ele é facilmente configurável no sentido de substituir os ícones indesejados por outros que sejam mais adequados ao seu estilo.

Pra quem usa um netbook ou um tablet, que têm telas de tamanho muito reduzido, contudo, há dois problemas:

  • O Lançador parece ocupar um espaço muito grande na tela, pra quem já tem pouco.
  • O tamanho dos ícones prejudica a distribuição do espaço para quem deseja ter mais do que 10 aplicativos representados ali.

Vou ensinar, aqui, como reduzir a largura do lançador e o tamanho dos ícones. Devo advertir que as alterações de que vamos tratar aqui são experimentais, até a presente data. Podem, portanto, trazer alguma instabilidade ao seu ambiente. O recomendável é não aplicar estas mudanças em máquinas de trabalho. Você foi avisado.

Antes de tudo, é necessário instalar o Gerenciador de Configurações do Compiz. Abra um terminal e digite o seguinte comando (e dê Enter, em seguida):

sudo apt-get install compizconfig-settings-manager

Posicione o ponteiro do mouse sobre o lançador, clique no ícone do Painel inicial e, em seguida clique em  “Gerenciador de Configurações do Compiz”.

Dentro do Gerenciador de Configurações do Compiz, selecione a guia “Área de trabalho”, no menu vertical à direita e, dentro do painel central, selecione Ubuntu Unity Plugin.

Selecione a guia horizontal “Experimental” e, dentro do painel localize a opção Launcher icon size (tamanho do ícone do lançador) e altere o valor para algo entre 32 e 64. Estes são, respectivamente, o menor e o maior valores possíveis. Sendo que 32 é o ideal para a tela de um netbook ou um tablet, que têm telas com espaço muito limitado.

Como você pode ver, há outras alterações possíveis. Desde que você não esteja usando uma máquina de produção/trabalho, pode ser interessante conhecê-las. Quando terminar de alterar as configurações, clique no botão “Voltar”, no canto inferior esquerdo e, em seguida, em “Fechar”.

Você vai precisar reiniciar a sessão para ver o funcionamento destas alterações. Para tanto, use a combinação de teclas Ctrl + Alt + Del e selecione Encerrar a sessão. Digite a sua senha para entrar de novo e ver que a barra lateral do lançador, com seus ícones, está menor.

Se tudo fugiu do controle, você pode voltar à configuração original do Unity digitando o comando:

unity –reset

dentro de um terminal.

Como instalar o Apache, MySQL e PHP no Linux

Ter um servidor Apache, MySQL e PHP rodando no seu PC é muito simples, consome pouco recurso do sistema e possibilita recriar um ambiente ideal para desenvolvedores de aplicativos web em PHP.
Algumas pessoas substituem o PHP por Perl — o que também é uma excelente escolha.
apache-asf_logo_feather-featured
Neste post, partimos do pressuposto de que você está usando uma máquina com o Ubuntu ou Debian instalado — o cenário ideal para o trabalho.
Vou mostrar como realizar esta tarefa, primeiro, com o aplicativo tasksel, um aplicativo de instalação de softwares que é parte integrante do instalador do Debian e também funciona no Ubuntu. Ele agrupa os pacotes de softwares necessários para realizar determinadas tarefas e permite personalizar a sua instalação a partir das atividades que vocẽ deseja que sejam realizadas na máquina.
Depois, vou mostrar como fazer a instalação através do comando apt-get.
Assim, você poderá escolher qual das duas metodologias prefere usar.

Método 1: Como instalar o Apache, MySQL e PHP com o tasksel

Com o tasksel, o administrador seleciona tarefas e não aplicativos para a instalação.
No Debian, este é o método mais simples e rápido, por que o aplicativo é padrão no sistema.
Se você quiser usar o tasksel no Ubuntu, vai precisar instalar. Veja como:

sudo apt-get update
sudo apt-get install tasksel

O tasksel precisa ser executado com privilégios administrativos. Veja exemplo:

sudo tasksel

Na tela inicial, selecione a opção LAMP server, com a barra de espaços do seu teclado e, em seguida, clique em OK.

Durante o processo de instalação será pedido para digitar e confirmar a nova senha de acesso ao servidor MySQL — cabe a você fazer esta escolha.

Veja esta outra forma de usar o comando tasksel, para instalar um servidor completo — Apache, MySQL e PHP:

sudo tasksel install lamp-server

Método 2: Como instalar fácil um servidor Apache, MySQL e PHP no Ubuntu

O Ubuntu não tem o tasksel instalado por padrão, mas você pode realizar uma operação semelhante com o comando apt-get.
Veja, no exemplo abaixo, como é simples:

sudo apt-get install lamp-server^

Fique atento, para responder algumas perguntas do instalador (a senha nova do MySQL, por exemplo).
Ao final, script já entrega o Apache funcionando.
Você pode verificar se ele está rodando, com o seguinte comando:

sudo service apache2 status

Se tudo estiver OK, a mensagem abaixo devera aparecer:

 * apache2 is running

Testando a instalação

Há outros testes que você deve fazer.
Para testar o PHP, comece por criar um arquivo /var/www/html/teste.php, assim:

sudo nano /var/www/html/teste.php

Digite o conteúdo que segue, dentro do arquivo:

<?php
phpinfo();
?>

Agora grave o arquivo (Ctrl + o, Ctrl + x).
Reinicie o Apache:

sudo apache2ctl restart

Uma outra forma de reiniciar o Apache:

sudo service apache2 restart

Agora abra o seu navegador e acesse o seguinte endereço:http://localhost/teste.php
Se tudo correu bem, você vai visualizar uma página semelhante à da figura abaixo.

Para finalizar os testes, vamos verificar se o MySQL está “up and running“. O processo é semelhante ao anterior, quando testamos o Apache. Veja:

sudo service mysql status

A mensagem abaixo, indica que o MySQL está rodando e o seu PID é 24675

mysql start/running, process 24675

Se o servidor de banco de dados MySQL não estiver rodando, você pode iniciá-lo com o seguinte comando:

sudo service mysql start
mysql start/running, process 17070

Note que o número do PID (processo) mudou…

Problemas com o Apache?

Leia aqui, como resolver o erro “Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName”.

Pós instalação

Para tornar a administração do MySQL mais fácil, instale o phpmyadmin:

sudo apt-get install phpmyadmin

Durante o processo de instalação, será pedida uma senha nova para o phpmyadmin e, em seguida, que você informe que o servidor de Internet desejado é o Apache:

Após a instalação do phpMyAdmin faça a configuração do Apache.
Abra o arquivo /etc/apache2/apache2.conf para edição:

sudo nano /etc/apache2/apache2.conf

Acrescente ao arquivo, a linha Include /etc/phpmyadmin/apache.conf
A seguir, reinicie o servidor:

sudo service apache2 restart

Para testar o phpMyAdmin aponte para o seguinte endereço no seu navegador: http://localhost/phpmyadmin.
Se uma página semelhante a esta (abaixo) aparecer, é provável que tudo tenha corrido bem por aqui:

LEIA MAIS:

  • tasksel — conheça melhor este aplicativo de instalação robusta do Debian, que você pode usar no Ubuntu
  • Problemas com o Apache? — Leia aqui, como resolver o erro “Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName”.
  • Leia artigos sobre MySQL, neste site.
  • Leia artigos sobre PHP, neste site.