Segurança é tudo (SQL Injection e XSS).
Existem varias formas de se ‘hackear’ um site umas das formas mais conhecidadas é o SQL Injection é uma técnica muito comum para tentar invadir website e/ou servidores, diante desta técnica programadores inesperientes acabam deixando o caminho livre para muito “hackers”, listei algumas dicas para ajudar a tentar evitar o uso de SQL Injection e outras formas de ataques mais conhecidas, melhorar a segurnaça do seu site. Gostaria de lembrar que por mais que tentamos evitar sempre precisaremos aprimorar está técnica.
Antes de tentar melhorar a segurança de seu site observe se seu servidor tem uma ambiente seguro.
XSS
Ataques por XSS ocorrem a partir de código maliciosos, inseridos ou executados a partir de outro site ou local tentando roubar informação ou enviar dados do servidor.
SQL INJECTION
Como todos já devem ter ouvido falar consiste em passar parâmetros para manipulação do banco de dados.
Como melhorar a segurança do seu site:
Verifique seu servidor sempre, observando se não existe vulnabirilidade ;
Não liste arquivos e diretórios. Você pode fazer isso manipulando .htaccess use, Options -Indexes;
Escondas os erros do código PHP use, ini_set( “display_errors”, “Off” );;
Certifique-se que o register_globals, esteja desabilitado;
Previnase com magic_quotes_gpc habilitado;
Nunca confie no usuário sempre verifique a entrada e saída;
Faça validação de números inteiros como números inteiros e não como números;
Use sempre session_regenerate_id(true), assim evita o roubo de sessões;
Nunca, jamais use arquivos com extensões .inc;
Utilize formulários captcha;
Valide os arquivos e extensões restringindo extensões perigosas para uploads;
Classe para requisição de formulario:
Validação da entrada de dados,
<?php
/** ————————————————————— *
* @AuthorName: Cristiano da Silva Teixeira *
* @Mail: cristiano.webinfo@gmail.com / cristiano-info@hotmail.com */
class work
{
/**
* [Requisição de Variaveis]
*/
public function request( &$array, $nome, $tipo=’texto’ )
{
$variavel = &$array[$nome]; /** [Monto a Variável ]*/
if( $variavel )
{
switch( $tipo ):
case ‘numero’:
return $this->limpanumero( $variavel );
break;
case ‘url’:
return $this->limpaurl( $variavel );
break;
case ’senha’:
return md5( $this->limpatexto( $variavel ) );
break;
case ‘inteiro’:
return $this->limpainteiro( $variavel );
break;
default:
case ‘texto’:
return $this->limpatexto( $variavel );
break;
endswitch;
} else
{
return false;
}
}
/**
* [END->Requisição de Variaveis]
*
* [Função Para Validar Texto]
*/
public function limpatexto( $variavel )
{
$variavel = strip_tags( $variavel );
$variavel = htmlspecialchars( $variavel );
if ( !get_magic_quotes_gpc() ){
$variavel = addslashes( $variavel );
}
$variavel = preg_replace( “‘<script[^>]*>.*?</script>’si”, ”, $variavel );
$variavel = preg_replace( ‘/<a\s+.*?href=”([^"]+)”[^>]*>([^<]+)<\/a>/is’, ‘\2 (\1)’, $variavel );
$variavel = preg_replace( ‘/<!–.+?–>/’, ”, $variavel );
$variavel = preg_replace( ‘/{.+?}/’, ”, $variavel );
$variavel = preg_replace( ‘/ /’, ‘ ‘, $variavel );
$variavel = preg_replace( ‘/&/’, ‘ ‘, $variavel );
$variavel = preg_replace( ‘/"/’, ‘ ‘, $variavel );
$variavel = preg_replace( sql_regcase( “/(from|select|insert|delete|where|drop table|union|show tables|#|\*|–|\\\\)/” ),”, $variavel );
return $variavel;
}
/**
* [END->Função Para Validar Texto]
*
* [Função Para Validar Números]
*/
public function limpanumero( $variavel )
{
$variavel = ( ( is_numeric( $variavel ) ) ? $variavel : 0 );
return $this->limpatexto( $variavel );
}
/**
* [END->Função Para Validar Números]
*
* [Função Para Validar Números Inteiros]
*/
public function limpainteiro( $variavel )
{
$variavel = intval( (int)$variavel );
return $this->limpatexto( $variavel );
}
/**
* [END->Função Para Validar Números Inteiros]
*
* [Função Para Validar URL]
*/
public function limpaurl( $variavel )
{
$variavel = ( urldecode( trim( $variavel ) ) );
return $this->limpatexto( $variavel );
}
}
$work = new work();
$work->request( $_GET, ‘parametro’ );
?>
