Laravel Security - fantasy0107/notes GitHub Wiki

Encryption

使用

  • OpenSSL
  • AES-256
  • AES-128
  • message authentication code(MAC)

設定

php artisan key:generate

使用 Encrypter

加密數值

所有加密的數值都是使用 AES-256-CBC 和 OpenSSL
而且所有加密過的數值都是用MAC去偵測任何的改變

encrypt($value);

解密數值

如果加密後的數值沒有辦法被適當的解密會丟出 DecryptException 例外

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}

加密但沒有序列化

任何的加密都會 serialize 所以像是array或object都可以用
如果沒有要序列化的話要用下面方式

//加密
$encrypted = Crypt::encryptString('Hello world.');

//解密
$decrypted = Crypt::decryptString($encrypted);

建議文章

Web Developer Security Checklist