SmallBasic Try Ruby
Nov 16

Pentru cei care nu stiu cross site scripting-ul est o vulnerabilitatea de securitate ,specifica aplicatiilor web, ce permite injectare de cod distrugator in paginile web vizualizate de catre utilizator. Ea este o vulnerabilitate client side adica nu are efect propriu-zis asupra informatie de pe server ..ati putea spune ca nu este un pericol din moment ce este client side dar sa ne imaginam urmatoare situatie : ce ar insemna daca pe site-ul unei banci , pe una dintre pagini exista un fromular in care toti clientii sunt rugati sa isi introduca datele personale, iar infromatia se va trimite undeva in internet,..ei bine in acest caz este grav.

Pentru a rezolva problema a inputurilor nesecurizate am realizat utmatoarea clasa in php cu o implementare simplificata mult.

<?php

class Secure {
/**internals
*
*/
var $data;
var $notSecured=array();

/**Constructor
*
*/
public function Secure(&$data,$autosecure=true)
{

$this->data=&$data;
if($autosecure==true)
$this->secureInputs();

}
/**
* verify if the array is empty
*/
public function isEmpty()
{

if(count($this->data)<=0)
return true;

foreach($this->data as $key=>$value)
{if(empty($value))
return true;
}

return false;
}
/**
* secure all filds
*/
public function secureInputs()
{

foreach ($this->data as $k => $v)
{
if($this->isNotSecured($k)==false)
$this->data[$k]=htmlspecialchars($v, ENT_QUOTES);
}

}
/**
* add key that is not secured
*/
public function addNotSecuredInputs(array $key)
{
$this->notSecured=$key;

}
/**
* check if input is one that that dosen’t have to be secured
*/
private function isNotSecured($key)
{

for($i=0;$i<count($this->notSecured);$i++)
if(!strcmp($this->notSecured[$i],$key))
return true;

return false;

}

}
?>

Iata cum ar arata utilizarea acesti clase

$sec=new Secur($_POST);

dupa cum se vede am salvat mult munca, clasa putand fi utilizata ori de cate ori avem nevoie sa securizam inputurile.Ce s-ar intimpla daca de exmplu dorim ca anumite inputuri sa contina cod html ??? Ei bine si problema acesta este rezolvabila cu mare usurinta

$sec=new Secure($_GET,false);

$sec->addNotSecuredInputs(”nume_variabila_ce_contine_cod_html”);

$sec->secureInputs();

Am ales o versiune minimala de implementare ce securizeaza doar cod html..voi reveni cu o versiune completa mult mai complexa ce securizeaza si injectie sql generand rapoarte de securitate ( de exmplu se ia ip-ul utilizatorului cu ganduri necurate printre multe altele) …Oricum clasele de php pe care le mai postez din cand in cand pe blog sun cioturi din un farmawork al meu pe care intr-un final sper sa il aduc la stadiul unui cms..dar asta este o alta poveste. :D

2 Responses to “XSS -cross site scripting”

  1. Klau says:

    Lasand la o parte greselile de exprimare, am o singura mentiune de facut. Acest atac XSS este folosit mai mult pentru redirectionarea spre alte site-uri malitioase ale attacker-ului, lucru ce nu reiese prea clar din ceea ce ai relatat tu. Ar fi interesanta abordarea si la Cross-site request forgery (CSRF/XSRF), unde intra-devar sunt belele.
    Asteptam… :D

  2. tomarea says:

    asteptam cu nerabdare part 2 :)

Leave a Reply

preload preload preload