Jump to content
php.lv forumi

Atfiltrēšana


4e4en

Recommended Posts

Man būtu vajadzīgs koda paraugs kas atfiltrē nost visus simbolus neieskaitot ciparus no 0 līdz 9 un manējais ko es uztaisīju ir šitāds, bet manuprāt viņš nav drošs un var saturēt kādu caurumu piemēram XSS vai kādu citu un kods ir te

function filter($data)
{
$data=ereg_replace("[a-zA-Z]","",$data)
$data=ereg_repalce("<>{}[];:'\"\\/|+=_-)(*&^%$#@!~`","",$data);
$data=ereg_repalce(" ,.?","",$data);
return $data;
}

un izmanto šādi:

$id=filter($_GET['id']);

Vai kāds var ieteikt kādu citu variantu kur atļauj tikai ciparus no 0 līdz 9

un PILNĪGI visus pārējos atfiltrē??

Edited by 4e4en
Link to comment
Share on other sites

ā) - stringam jābūt ciparam, e.g. $_POST['x']=='23', pārbaudāms ar

if ($_POST['x']*1) (ar izņēmumu, ja tas var būt =='0', || $_POST['x']==='0')

jo ja viens no multiplikātoriem būs strings, tas tiks pārkonvertēts par 0 (būtībā, var arī plusēt 0)

bē) jādabon vienalga kādus ciparus no stringa, e.g. ja pārbauda seriāņiku:

$len=strlen($_POST['x']);
$number='';
while(--$len>-1)
if ($_POST['x']{$len}==0 || $_POST['x']{$len}*1)
  $number.=$_POST['x']{$len};

Edited by Venom
Link to comment
Share on other sites

Es arī sākumā gribēju ieteikt intval, bet problēma rodās, ja jāapstrādā, piemēram, 30 simbolu garas ciparu virknes - tādā gadījumā intval nedos pareizu rezultātu.

vai šāda problēma ir aktuāla šī jautājuma autoram, tas jau ir cits jautājums.

 

P.S. XSS laikam domāts Cross Site Scripting

Edited by Aleksejs
Link to comment
Share on other sites

×
×
  • Create New...