Peki bu biraz naif olabilir, ama nasıl sadece sunucu üzerinde şifreleme hakkında [php sanıyorum] yaptığınızda geri şifresini ardından DB yazmadan önce yan ve okur? Bu sorun, bir sunucu admini istemiyorum gibi görünüyor easily strong> veri okumak. Eğer Symfony kullanıyorsanız, muhtemelen kodu değiştirmek zorunda kalmazsınız modelinde derin yeterli yapabilirsiniz.
Bazı kazma sonra, burada özellikle cesur duygu olsaydı ben bunu nasıl olduğunu.
Edit buildParams () xxx / symfony / satıcı olarak / itmek / util / BasePeer.php gibi 860 bulacaksınız
$params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => $crit->getValue());
geçmek
$params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => your_encryption_method($crit->getValue()));
(Ben bir şey kaçırmış sürece) tüm symfony / propel) (sonunda bu işlevi çağırarak sona erecek veritabanına yazar, böylece db yazdığınız her şeyi your_encryption_method ile şifreli alır.
Bu deneyin ve still cesur duygu çalıştığını ve eğer, / xxx/symfony/vendor/propel-generator/classes/propel/engine/builder/om/php5 () işlevini addHydrate değiştirin PHP5BasicObjectBuilder.php (line 668) size symfony propel-build-model veya symfony-propel-build-all otomatik olarak veritabanından şeyi şifresini çağırdığınızda hidrat () kodu propel sizin için oluşturur böylece.
Şu anda gibi görünmelidir
case PropelTypes::DATE:
case PropelTypes::TIME:
case PropelTypes::TIMESTAMP:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n, null);
";
break;
default:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n);
";
Eğer satırlar boyunca bir şey değiştirmek istiyorum
case PropelTypes::DATE:
case PropelTypes::TIME:
case PropelTypes::TIMESTAMP:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n, null);
";
break;
default:
$script .= "
\$this->$clo = \my_decryption_function($rs->get$affix(\$startcol + $n));
";
Bu değişikliği yaptıktan sonra, symfony itmek-build-modeli çalıştırmak ve :-) çalıştı varsa bana bildirin. İyi şanslar ve muhtemelen bu biliyorum, ama onları değiştirmeden önce bu dosyaların yedeklerini yapmak .... oh ve çekirdek Symfony değiştirerek konum beri bunları tüm şifreli veri yazmak istemiyorsanız, diğer projelerin sorunları olacak db