के साथ डीबी में उपयोगकर्ता डेटा को सुरक्षित रूप से संग्रहीत करें मैं उपयोगकर्ताओं से डेटा स्टोर करना चाहता हूं ताकि डेटाबेस बेकार हो जाए, भले ही डेटाबेस किसी भी तरह लीक हो जाए। मैं भी डेटा एन्क्रिप्ट करने में सक्षम हो नहीं करना चाहते, तो मैं `इस तरह openssl_encrypt 'के माध्यम से अपने सभी डेटा एन्क्रिप्ट:सिम्फनी
$passCode = base64_encode($this->get('session')->get('_pk'));
if (strlen($passCode) <= 16) {
$iv = str_pad($passCode, 16, '0');
} else {
$iv = substr($passCode, 0, 16);
}
$ciphertext = openssl_encrypt('whatevervalue', 'AES-256-CBC', $passCode, 0, $iv);
$test = new Test();
$test->setValue($ciphertext);
...
$em->persist($test);
$em->flush();
...
$passCode
वास्तव में अपने पासवर्ड, जो मैं इस तरह सत्र वर में डाल दिया है :
SecurityListener.php
<?php
namespace AppBundle\Listener;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
class SecurityListener
{
public function __construct($security, Session $session)
{
$this->security = $security;
$this->session = $session;
}
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$this->session->set('_pk', base64_encode($event->getRequest()->get('_password')));
}
}
2 समस्याएं:
$passCode
संग्रहीत करना (वास्तव में सत्रों के बारे में बहुत कुछ जानना व्हाईटआउट) संभवतः एक सुरक्षा समस्या प्रतीत होता है?यदि कोई उपयोगकर्ता पासवर्ड बदलता है तो क्या होता है। वर्तमान तरीके से मुझे अपने सभी डीबी डेटा को नए पासवर्ड से डिक्रिप्ट और फिर से एन्क्रिप्ट करना होगा, ताकि यह उचित समाधान की तरह प्रतीत न हो। क्या होगा यदि वह अपना पासवर्ड खो देता है?
मैं अपने डेटाबेस में सभी डेटा है कि खुद को उपयोगकर्ता वहाँ प्रवेश करती है एन्क्रिप्ट करना चाहते हैं:
शायद यह समझने के लिए क्या मैं यहाँ करना चाहते हैं आसान है। मैं चाहता हूं कि यह एक "फीचर" हो कि व्यवस्थापक भी कुंजी के बिना डेटा नहीं पढ़ सकते हैं। मुझे पता है कि उत्तरार्द्ध 100% संभव नहीं है (क्योंकि वेब इंटरफ़ेस के माध्यम से दर्ज किए जाने पर पासवर्ड/कुंजी को अवरुद्ध करने के तरीके होंगे, लेकिन कम से कम यह कोड के कुछ परिवर्तनों को लागू करता है)। क्या ऐसा कुछ भी संभव है? कोई ओपन सोर्स पोरजेक्ट्स मैं देख सकता हूं?
धन्यवाद! , यूजर आईडी खाता निर्माण तिथि, कुछ यादृच्छिक उत्पन्न नमक ...
डेटाबेस में डेटा संग्रहीत करते समय डेटा क्रमिकरण/अनिश्चितता का उपयोग करने का प्रयास क्यों न करें। – Haridarshan
सामान्य अनुशंसा: 'opensl_encrypt()' के बजाय [एक सुरक्षित PHP एन्क्रिप्शन लाइब्रेरी] (https://github.com/defuse/php-encryption) का उपयोग करें। विशेष रूप से, 'KeyProtectedByPassword' आपके लिए ब्याज की होगी। –