gpt4 book ai didi

php - 尝试对整个数据库实现加密

转载 作者:行者123 更新时间:2023-11-29 07:32:37 25 4
gpt4 key购买 nike

我有一个相当大的网络应用程序,目前没有加密它存储在 mysql 数据库中的任何数据(密码和一些 token 除外)。有相当多的项目在数据库中存储和检索。我想知道是否有某种方法可以自动加密存储到数据库中的所有内容,然后在从数据库检索任何内容时自动解密。我现在最好的选择是将其放入我的routes.php 文件中:

View::composer('Crypt', function($view){
$view->with('Crypt', Crypt::class);
});

然后每次 Web 应用程序在每个 Controller 、模型和 View 中调用数据库时手动更改,例如更改:

$user->email = Input::get('email');

$user->email = Crypt::encode(Input::get('email));

然后每次我检索数据库值(很多)时:

{{Crypt::decode($user->email)}}

我觉得一定有一种比手动执行 1000 次更简单的方法,但我不确定如何实现。

最佳答案

为了避免每次调用数据库时都必须重复使用 encrypt()decrypt() 方法,您可以使用 Eloquents Accessors & Mutators .

定义访问器

To define an accessor, create a getFooAttribute method on your model where Foo is the "camel" cased name of the column you wish to access. In this example, we'll define an accessor for the first_name attribute. The accessor will automatically be called by Eloquent when attempting to retrieve the value of first_name:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
/**
* Decrypt the user's first name.
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return Crypt::decode($value);
}
}

定义更改器(mutator)

To define a mutator, define a setFooAttribute method on your model where Foo is the "camel" cased name of the column you wish to access. So, again, let's define a mutator for the first_name attribute. This mutator will be automatically called when we attempt to set the value of the first_name attribute on the model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
/**
* Encrypt the user's first name.
*
* @param string $value
* @return string
*/
public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = Crypt::encode($value);
}
}

关于php - 尝试对整个数据库实现加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com