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 ... etcNos 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($NUM, FILTER_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 )
Calendário



