Support the ongoing development of Laravel.io →
Security Database Eloquent

I have a table that needs to store confidential data in two BLOB columns. The overall SQL statement needs to look like this:

INSERT INTO mytable (user_id, colA, colB) 
VALUES ('123', AES_ENCRYPT('value1', 'secretkey'), AES_ENCRYPT('value1', 'secretkey'));

I'd obviously like to use Eloquent's save() functionality, but it looks easier to do with the DB driver. From the documentation, it needs to be:

DB::table('mytable')->insert(
    array('user_id'=>'123', 
'colA' => DB::raw("AES_ENCRYPT('value1', 'secretkey')"), 
'colB' => DB::raw("AES_ENCRYPT('value1', 'secretkey')"))
);

Is there a better way to do this, or a native way to do with Eloquent (or the saving() event?) It would be lovely to have AES in models automatically, e.g. a function called $model->secure_save().

Last updated 2 years ago.
0

Use Laravels Crypt::encrypt/decrypt with Eloquents setColAttribute/getColAttribute? :)

Last updated 2 years ago.
0

The above code works successfully, but it's a pain to implement. That was going to be my next question - what's the best way to transparently use MySQL encryption with Eloquent? Can't find any documentation on those 2 methods?

Last updated 2 years ago.
0

I'm looking for this as well.

0

Using Acessors and Mutators don't help you? I found it as the easy way to handle data modification when saving and reading from DB.

0

Its 2017 !

Is there any better way to do this yet ??

I'm in real need of this.

0

I just used an accessor:

# Controller
$model->fill([ 'password' => '12345' ]);

# Model
public function setPasswordAttribute($value)
{
    $this->attributes['password'] = DB::raw("AES_ENCRYPT('$value', 'some-key')");
}
Last updated 7 years ago.
0

Sign in to participate in this thread!

Eventy

Your banner here too?

azcoppen azcoppen Joined 15 Mar 2014

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.