Kolon Tipi göre MySQL Veri Doğrulama ve sanitization gerçekleştiren bir PHP kütüphanesi var mı?

1 Cevap php

Bir MySQL Db için bazı temel doğrulama ve kaçan işlevselliği gerçekleştirebilirsiniz herhangi bir açık kaynak kitaplığı veya çerçeve biliyor musunuz.

i çizgisinde bir şey tasavvur:

//give it something to perform the quote() quoteInto() methods
$lib->setSanitizor($MyZend_DBAdaptor); 

//tell it structure of the table - colnames/coltypes/ etc
$lib->setTableDescription($tableDescArray); 

//use it to validate and escape according to coltype 
foreach ($prospectiveData as $colName => $rawValue)
if ( $lib->isValid($colName, $rawValue))
 {
 //add it to the set clause
 $setValuesArray[$lib->escapeIdentifier($colName)] = $lib->getEscapedValue($colName,$rawValue);
 }
else {
 throw new Exception($lib->getErrorMessage());
 }

vs ..

I have looked into - Zend_Db_Table (which knows about a table's description), and - Zend_Db_Adaptor (which knows how to escape/sanitize values depending on TYPE)

onlar sterilize rağmen ancak, bunlar otomatik güncelleştirmeler / ekler önce herhangi bir akıllı doğrulama şeyler yapmaz

Herkes ben değil benim kendi yazma daha kullanabilirsiniz doğrulama bu tür preform için iyi bir PHP kütüphanesi biliyor musun?

i Bu tür şeyler bir sürü öngörmektedir:

   ...  
   elseif (eregi('^INT|^INTEGER',$dataset_element_arr[col_type]))
    {
    $datatype='int';

    if (eregi('unsigned',$dataset_element_arr[col_type]))
        {
        $int_max_val=4294967296;
        $int_min_val=0;
        }
    else    {
        $int_max_val=2147483647;
        $int_min_val=-2147483648;
        }
    }

(Ps eregi önerilmiyor biliyorum - zahmetli kod onun sadece bir örnek)

1 Cevap

Ben Zend_Db'nin içinde bir sürü kod yazdı.

Bu sorgu parametreleri kullanır, çünkü kod sterilize veya güncelleştirme / ekleme kaçan bir şey yapmaz. Eğer parametreleri kullanarak sorguya dinamik değerlerini geçmesi halinde, SQL enjeksiyonu hakkında endişelenmenize gerek yoktur.

Daha fazla bilgi için avoiding MySQL injections with the Zend_Db class benim cevaba bakınız.

MySQL de PHP tamsayılar daha büyük BIGINT gibi bazı veri türlerini destekler, böylece yerine PHP dizeleri onları temsil etmek zorunda. Daha sonra MySQL böylece DATE değerler ve vardır. Sadece veritabanına koymadan ve herhangi bir istisna ile başa çıkma değerlerini doğrulamak için daha iyidir.