Warning: strpos() [function.strpos]: needle is not a string or an integer in /home/onidesk/public_html/blog/index.php on line 41

Warning: strpos() [function.strpos]: needle is not a string or an integer in /home/onidesk/public_html/blog/index.php on line 48

Warning: strpos() [function.strpos]: needle is not a string or an integer in /home/onidesk/public_html/blog/index.php on line 55

Warning: strpos() [function.strpos]: needle is not a string or an integer in /home/onidesk/public_html/blog/index.php on line 61
Onidesk TI :: Blog Oficial - Segurança no processamento de dados - Validação paralela com Javascript e PHP (evitando ataques via JS)
Segurança no processamento de dados - Validação paralela com Javascript e PHP (evitando ataques via JS) 
Não há dúvidas de que o JavaScript é uma linguagem poderosa , dando origem a livrarias mundialmente usadas no domínio da Web , como é o caso do JQuery, da YUI Library (Yahoo), muito usada no Google Maps ... etc

Nos standarizados sites Web é utilizada essencialmente para validação de dados.
Contudo comporta uma problemática enorme, visto ser uma linguagem que corre do lado do cliente.
Isso permite a utilizadores mais experimentados alterar o processo da validação, e processar rotinas que não seriam as normais.
Ataques XSS (Cross Site Scripting) são muito vulgares e perigos.

Assim urge atacar o problema de outra forma de modo a incrementar segurança nos sistemas , tornando-os fiáveis e menos falíveis.

No PHP temos uma ajuda enorme das funções FILTER (pode aceder à documentação no link relacionado em baixo).

Este tipo de funções é nativo do PHP e poderá simplemente alterar no php.ini , no estado de "filter.default" e "filter.default_flags".

Para exemplificar a facilidade vamos imaginar que queremos validar um número que virá da url, por exemplo
http://www.onidesk.com/blog?post_id=100

Uma das formas seria obter o id com javascript e validá-lo da seguinte forma :


<script language="text/javascript">
/*
 http://www.codetoad.com/javascript/isnumeric.asp
*/
var Domain = "0123456789.";
var Num = true;
var Char;

function isNumeric(str){

for(var i = 0; str.length && Num==true;i++){
   
Char = str.CharAt(i);
        
       if(Domain.indexOf(Char)==-1){
          
       Num = false;    
      }
    
   }
 return Num;

}


/*
  var UrlNum = "<?=$_REQUEST["post_id"]?>";
  
  var rs = isNumeric(UrlNum);
  if(rs==false){
    alert('Ops não é um post válido, vai ser redireccionado');
   }
 
*/

</script>



No javascript temos ainda a opção de validar com as expressões regulares, usando o método test , por exemplo.

Recomendo este artigo para leitura

http://www.devarticles.com/c/a/JavaScri ... aScript/1/


Um exemplo básico , usando expressões regulares


<script>
var num = /^[0-9]/

if(!num.test){

alert('Só se aceitam numeros');
}

</script>



ou verificar se a url é valida :


function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}

Como estamos a ver usar expressões regulares , é um trabalho moroso e complexo.
Mas isso no php ficaria facilitado com o uso das chamadas funções filter


O exemplo a seguir ilustra a situação




<?php
$NUM 
$_RESQUEST["post_id"]; # era 100 lá atrás

$int_options = array("options"=>
array(
"min_range"=>0"max_range"=>256));

var_dump(filter_var($NUMFILTER_VALIDATE_INT$int_options));

?>




o exemplo acima devolverá bool(true) . Simples Fácil e extremamente útil

Mais exemplos em http://www.w3schools.com/php/php_ref_filter.asp





[ adic comentário ] ( 338 vistas )   |  [ 0 trackbacks ]   |  permalink  |  link relacionado  |   ( 3 / 395 )

<<Primeiro <Anterior | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Próximo> Último>>