Laravel – Encryption (Mã hóa)

0
47

Mã hóa là một quá trình chuyển đổi một văn bản thuần túy thành một tin nhắn bằng cách sử dụng một số thuật toán mà bất kỳ người dùng thứ ba nào cũng không thể đọc được thông tin. Điều này rất hữu ích cho việc truyền thông tin nhạy cảm vì có ít cơ hội cho kẻ xâm nhập nhắm mục tiêu thông tin được chuyển hơn.

Mã hóa được thực hiện bằng một quá trình gọi là Cryptography. Văn bản sẽ được mã hóa được gọi là Văn bản thuần túy và văn bản hoặc tin nhắn thu được sau khi mã hóa được gọi là Cipher Text.. Quá trình chuyển đổi văn bản mật mã sang văn bản thuần túy được gọi là Decryption.

Laravel sử dụng mã hóa AES-256 và AES-128, sử dụng Open SSL để mã hóa. Tất cả các giá trị có trong Laravel đều được ký bằng cách sử dụng Mã xác thực thông qua giao thức để giá trị cơ bản không thể bị giả mạo khi nó được mã hóa.

Configuration

php artisan key:generate
Artisan Key

Lệnh được đưa ra ở trên giúp tạo khóa có thể được sử dụng trong ứng dụng web. Quan sát ảnh chụp màn hình được hiển thị bên dưới –

Ghi chú
Các giá trị mã hóa được căn chỉnh chính xác trong tệp config / app.php, bao gồm hai tham số để mã hóa là key and cipher. Nếu giá trị sử dụng khóa này không được căn chỉnh đúng, tất cả các giá trị được mã hóa trong Laravel sẽ không an toàn.

Encryption Process

Việc mã hóa một giá trị có thể được thực hiện bằng cách sử dụng encrypt helper trong bộ điều khiển của lớp Laravel. Các giá trị này được mã hóa bằng OpenSSL và AES-256 cipher. Tất cả các giá trị được mã hóa được ký bằng mã Xác thực Thư (MAC) để kiểm tra bất kỳ sửa đổi nào của chuỗi được mã hóa.

defaultCommand

Mã hiển thị bên dưới được đề cập trong một bộ điều khiển và được sử dụng để lưu trữ một tin nhắn bí mật

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DemoController extends Controller{
   **
      * Store a secret message for the user.
      *
      * @param Request $request
      * @param int $id
      * @return Response
   */
   
   public function storeSecret(Request $request, $id) {
      $user = User::findOrFail($id);
      $user->fill([
         'secret' => encrypt($request->secret)
      ])->save();
   }
}

Decryption Process

Việc giải mã các giá trị được thực hiện với decrypt helper. Quan sát các dòng mã sau:

use Illuminate\Contracts\Encryption\DecryptException;

// Exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}

Xin lưu ý rằng nếu quá trình giải mã không thành công do MAC không hợp lệ được sử dụng, thì một ngoại lệ thích hợp sẽ được ném ra.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây