1

MySQL Db の基本的な検証およびエスケープ機能を実行できるオープン ソース ライブラリまたはフレームワークを知っていますか。

私は次の行に沿って何かを想定しています:

//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());
 }

等...

私が調べた - Zend_Db_Table (テーブルの説明を知っている) と - Zend_Db_Adaptor (TYPE に応じて値をエスケープ/サニタイズする方法を知っている)

ただし、サニタイズはできますが、更新/挿入の前に巧妙な検証を自動的に行うわけではありません

自分で作成するのではなく、この種の検証を実行するための優れた PHP ライブラリを知っている人はいますか?

私はこの種のものをたくさん想定しています:

   ...  
   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 が非推奨であることを知っています - それは面倒なコードの単なる例です)

4

1 に答える 1

1

多くのコードを Zend_Db で書きました。

コードは、クエリ パラメーターを使用するため、更新/挿入で多くのサニタイズやエスケープを行いません。パラメータを使用して動的な値をクエリに渡す場合、SQL インジェクションを心配する必要はありません。

詳細については、Zend_Db クラスを使用した MySQL インジェクションを回避するための私の回答を参照してください。

BIGINTMySQLは、PHP の整数より大きいデータ型もサポートしているため、代わりに PHP 文字列で表現する必要があります。次に、MySQLDATEの値などがあります。値をデータベースに挿入して例外に対処することで、値を検証することをお勧めします。

于 2010-04-23T02:02:41.403 に答える