Postagens populares

Oh vida "vea" boa

sexta-feira, 25 de março de 2011

Erro conexão Micocrosoft SQL Server

Verificar os protocolos e aliases habilitados
Os problemas de conectividade podem ocorrer se o alias no computador cliente estiver configurado incorretamente. É possível exibir os aliases usando o utilitário Client Network. Para fazer isso, execute estas etapas:

1. Inicie o utilitário de rede para clientes. Se as ferramentas cliente do SQL Server estiverem instaladas no computador que está executando o aplicativo cliente, execute estas etapas para iniciar o utilitário de rede para clientes:
1. Clique em Iniciar e aponte para Programas.
1. Aponte para Microsoft SQL Server e clique em Utilitário Client Network.
Se as ferramentas cliente do SQL Server não estiverem instaladas no computador cliente, execute estas etapas para iniciar o utilitário de rede para clientes:
1. Clique em Iniciar e em Executar.
2. Na caixa de diálogo Executar, digite cliconfg na caixa Abrir e clique em OK.
2. Na janela Utilitário de rede para clientes do SQL Server, clique na guia Geral e habilite todos os protocolos que deseja usar.



Observação É necessário habilitar pelo menos o protocolo TCP/IP e o protocolo pipes nomeados.
3. Clique na guia Alias e verifique os aliases configurados para a instância do SQL Server.
4. Verifique as propriedades dos aliases para ter certeza de que o nome do servidor ou endereço IP e o protocolo estão configurados corretamente.

É possível criar um novo alias para testar a conectividade usando o nome do servidor, o endereço IP ou mesmo usando um protocolo diferente.

quarta-feira, 10 de novembro de 2010

Oracle: Previous, current and next values

Oracle: Previous, current and next values

The Oracle lag and lead functions can be used to retrieve values from a previous row (lag) or a next row (lead). Consider the following example.


SQL> select deptno
2 , lag(deptno) over (order by deptno) as previous
3 , lead(deptno) over (order by deptno) as next
4 from scott.dept
5
SQL> /

DEPTNO PREVIOUS NEXT
------ ---------- ----------
10 20
20 10 30
30 20 40
40 30

sexta-feira, 29 de outubro de 2010

Uma forma de visualizar a descrição de uma tabela no Oracle

A tabela user_tab_columns armazena a descrição das colunas das tabelas, visões e clusters do usuário atual.


SELECT
column_name "Name",
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='NOME_DA_TABELA';

terça-feira, 20 de julho de 2010

segunda-feira, 5 de julho de 2010

Redmine com Postgresql no Mandriva

Se houver problemas com o postgres ao gerar as tabelas no schema do redmine execute o seginte comando:

# gem install postgres-pr

quarta-feira, 23 de junho de 2010

Injeção de SQL

Injeção de SQL é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com base de dados via SQL. O ataque ocorre quando se consegue inserir uma série de instruções SQL dentro de uma consulta através da manipulação das entradas de dados de uma aplicação.
Para entender o funcionamento consideremos a instrução SQL sequinte:

SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS;


Esta instrução retorna todos os registros da tabela usuários de um sistema. A partir desta mesma instrução os registros a serem retornados podem ser restritos através da inclusão da clausula WHERE, por exemplo:

SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = “ADMIN” AND SENHA = “12345”;


Se a aplicação não tratar apropriadamente o conteúdo inserido pelo usuário ela poderá gerar uma entrada indesejada e retornar informações que não deveriam ser expostas. É comum aplicações criadas com PHP que com frequencia tem suas instruções SQL criadas através das variáveis que compõem os parametros recebidos por um script-server-side oferecerem maior vulnerabilidade para este tipo de ataque. O código, em PHP, a seguir ilustra uma possibilidade de ataque:

1. 2. $usuario = $_POST['usuario'];
3. $senha = $_POST['senha'];
4.
5. $query_string = “SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = '{$usuario}'
AND SENHA = '{$senha}';
6. ?>


Com a entrada de dados abaixo é possivél ter como retorno todos os registro da tabela.




Essa entrada faz com que a aplicação gere o sequinte código:

SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = “” AND SENHA = “” or 1 = 1;


Através desse tipo de falha os estragos podem ser muito maiores pois basta inserir no campo senha do formulário de login ; DROP TABLE USUARIOS --, essa instrução irá gerar código a seguir:

SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = “” AND SENHA = “”; DROP TABLE USUARIOS --;


Neste caso as intruções seram executada pelo banco de dados sem nenhum problema pois não possuem erros de sintaxe. O primeiro “;” encerra a primeira instrução e possibilitará a execução da instrução que apaga a tabela de usuários.

Em Java ou qualquer linguagem de programação, ao acessar a base de dados, se as instruções SQL forem concatenadas como a consulta em PHP acima o resultado será o mesmo. Por exemplo:

{
...
conn = pool.getConnection( );
String sql = “SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = '” + usuario + “'
AND SENHA = '” +senha + ”'”;
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
...
}


Como estratégia de defeza, para se prevenir de injeção de SQL, recomenda-se que todas as consultas sejam parametrizadas, nunca deve-se concaternar strings para criar instruções SQL.

{
...
String nome_usuario = request.getParameter("usuario");
String senha_usuario = request.getParameter("senha");
conn = pool.getConnection( );
String sql = “SELECT ID, LOGIN, SENHA, EMAIL
FROM USUARIOS
WHERE LOGIN = ?
AND SENHA = ?”;
PreparedStatement pstmt = connection.prepareStatement( sql );
pstmt.setString( 1, nome_usuario);
pstmt.setString( 2, senha_usuario);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
...
}


Essa é uma das estratégias para nos previnirmos deste tipo de ataque, como enunciado no conceito de injeção de sql ela se utiliza de falhas nos sistemas que acessam base da dados. Visto isso o que pode ser feito é criar aplicativos seguindo as especificações de segurança necessárias para evitar esse tipo de ataque.


BIBLIOGRAFIA

http://pt.wikipedia.org/wiki/Inje%C3%A7%C3%A3o_de_SQL
[11h01 23/06/2010]

http://www.totalsecurity.com.br/article.php?sid=732
[00h23 23/06/2010]

http://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java
[01h56 24/06/2010]

quinta-feira, 25 de março de 2010

Como recuperar a senha do root do MySQL

Esse aqui eu já usei e funcionou no Linux Mandriva

http://www.vivaolinux.com.br/dica/Recuperar-senha-de-root-do-MySQL