Các Bước Mã Hóa Dữ Liệu Cho Web API
Ở phần trước chúng ta đã cùng nhau tìm hiểu về RESTful Api với Laravel. Ở phần tiếp theo này chúng ta sẽ cùng nhau tìm hiểu cách thức mã hóa dữ liệu trên api đã tạo ở bài trước nhé.
Có 2 thứ mà khi nhắc đến REST API tất cả chúng ta không hề bỏ lỡ được, đó là request và response. Phát triển API ngày càng được chú trọng hơn. Tuy nhiên trong quy trình tăng trưởng những API, việc viết API thực ra hoàn toàn có thể viết đơn thuần cũng được, nhưng rồi sẽ đến lúc những API bị săm soi, những dữ liệu quan trọng vô tình lọt ra ngoài .
Mặc dù HTTPS là giao thức HTTP đi kèm mã hóa đầu cuối để phòng chống MITM. Thế nhưng đây vẫn là chưa đủ, và những nhà tăng trưởng API cần đi thêm 1 bước nữa trên con đường phòng chống những kẻ tò mò .
Mã hóa là gì?
Hiểu nôm na mã hóa là phương thức ngụy trang hoặc che giấu một tin nhắn bằng cách áp dụng một số bước lập trình máy tính thành các chuỗi ký tự đặc biệt để ngăn những người không phận sự tiếp cận vào thông tin đó.
Bạn đang đọc: Các Bước Mã Hóa Dữ Liệu Cho Web API
Những thuật ngữ mã hóa như kiểu mã hóa, thuật toán mã hóa và độ mạnh mã hóa thường khiến người dùng nhầm lẫn, hãy nghiên cứu và phân tích nó nhé :
Kiểu mã hóa:
Là loại mã hóa tương quan đến chiêu thức mã hóa được triển khai xong. Có rất nhiều loại giải pháp mã hóa khác nhau đã sinh ra. Mỗi loại có những ưu và điểm yếu kém riêng. Ta hoàn toàn có thể phân loại những chiêu thức mã hóa thành 4 loại chính :
- Mã hóa cổ điển
- Mã hóa một chiều
- Mã hóa đối xứng
- Mã hóa bất đối xứng
Thuật toán mã hóa:
Khi nói về độ mạnh mã hóa, tất cả chúng ta thường nói về một thuật toán mã hóa đơn cử. Các thuật toán có tên mê hoặc như Triple DES, RSA hoặc AES. Tên thuật toán mã hóa thường đi kèm với giá trị bằng số, như AES-128, AES-256. Con số này đề cập đến kích cỡ khóa mã hóa và xác lập thêm độ mạnh của thuật toán .
Các loại mã hóa tạo thành nền tảng cho thuật toán mã hóa, trong khi thuật toán mã hóa chịu nghĩa vụ và trách nhiệm về độ mạnh mã hóa. Chúng ta nói về độ mạnh mã hóa theo bit. Dưới đây là 1 số ít thuật toán mã hóa phổ cập nhất :
- Data Encryption Standard (Tiêu chuẩn mã hóa dữ liệu – DES)
- TripleDES
- RSA
- Advanced Encryption Standard (Tiêu chuẩn mã hóa tiên tiến – AES)
- Twofish
Laravel đang sử dụng AES nên tất cả chúng ta đi qua về AES chút nhé .
Advanced Encryption Standard ( AES ) hiện là tiêu chuẩn mã hóa của nhà nước Hoa Kỳ sử dụng. Nó dựa trên thuật toán Rijndael được tăng trưởng bởi hai nhà mật mã người Bỉ, Joan Daemen và Vincent Rijmen .
AES là thuật toán khóa đối xứng và sử dụng mật mã khối đối xứng. Nó gồm có ba kích cỡ chính : 128, 192 hoặc 256 bit. Hơn nữa, có những vòng mã hóa khác nhau cho mỗi kích cỡ khóa. Một vòng là quy trình chuyển văn bản thô thành văn bản mã hóa. Đối với 128 – bit, có 10 vòng ( round ) ; 192 – bit có 12 vòng, và 256 – bit có 14 vòng .
Có những cuộc tiến công triết lý chống lại thuật toán AES, nhưng tổng thể đều nhu yếu tàng trữ dữ liệu đơn cử và thời hạn nhất định, do đó không khả thi trong thời gian hiện tại. Ví dụ, một cuộc tiến công vào mã hóa AES cần 38 nghìn tỷ dữ liệu, nhiều hơn tổng thể dữ liệu được tàng trữ trên tổng thể những máy tính trên toàn quốc tế trong năm năm nay. Ước tính thời hạn thiết yếu để tạo tiến công brute-force khóa AES-128 là hàng tỷ năm .Laravel dùng thuật toán này để mã hóa dữ liệu vậy việc tất cả chúng ta cần làm là những gì ? Chúng ta chỉ cần làm những bước như sau :
- Tạo 1 Secret Key trên server.
- Chia sẻ Secret Key giữa client và server.
- Dùng Secret Key với mã hóa AES (Cái này Laravel đã làm rồi) mã hóa response trả về từ server.
- Dùng Secret Key để giải mã trở lại lấy thông tin từ Response.(Nhiệm vụ này là của client nhé)
Mã hóa API response
Ở trong document của Laravel có nói Laravel sử dụng OpenSSL để cung cấp mã hóa AES-256 và AES-128. Tất cả giá trị mã hóa của Laravel được đăng ký sử dụng một mã (MAC) để phát hiện chỉnh sửa ở chuỗi được mã hóa.
Trước khi sử dụng mã hõa của Laravel, bạn phải đặt một
key
trong file cấu hìnhconfig/app.php
. Bạn có dùng lệnhphp artisan key:generate
để tạo ra key này vì lệnh Artisan command sẽ sử dụng secure random bytes của PHP để tạo ra key. Nếu giá trị này không được đặt, tổng thể mã hóa của Laravel sẽ không bảo đảm an toàn .
Chúng ta mở
config/app.php
để xem có gì nào/* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC',
đây là phần chính, key đang được lấy từ file env giá trị của APP_KEY và tất cả các giá trị được mã hoá sử dụng OpenSSL và thuật toán
AES-256-CBC
cipher.Phần diễn đạt trên bảo tất cả chúng ta nên đặt chuối 32 ký tự ngẫu nhiên làm key nếu không ứng dụng sẽ không hoạt động giải trí .
Chúng ta mở env tìm đến APP_KEY và random chuỗi 32 ký tự nhéAPP_KEY=ABCDEF123ERD456EABCDEF123ERD456E
Vậy là xong phần thông số kỹ thuật, tiếp theo tất cả chúng ta mở file app / Modules / Api / Controllers / Products. php tại ngay method index tất cả chúng ta chỉnh sửa như sau :
public function index(){ $data = Product::all(); $payload = Crypt::encrypt($data); return response()->json([ 'status' => 200, 'message' => 'success', 'data' => $payload ],Response::HTTP_OK); }
Ở trên Laravel có sử
Crypt facade
Illuminate\Support\Facades\Crypt; giúp chúng ta thực hiện mã hóa và giải mã. Encrypt có input là dữ liệu của chúng ta lấy ra, chúng ta hứng dữ liệu đã được mã hóa bằng biến $payload.Ở phần return mình có sử dụng response của Illuminate \ Http \ Response và phương pháp json ( ) sẽ tự động hóa thiết lập Content-Type header thành ‘ application / json ‘ nó tương tự như như phương pháp json_encode của PHP. phương pháp này có 2 đối số, đối số 1 là dữ liệu cần trả về và đối số thứ 2 là status code mà phần trước mình đã nói ở đây Response :: HTTP_OK dược define là 200 .
Khi tất cả chúng ta test trên Postman tác dụng là đây :
Ở phía client hoặc api khác muốn giải mã sẽ cần KEY chuối 32 ký tự là chúng ta gán ở file env và phương thức mã hóa AES-256-CBC mới giải mã được data này. Như vậy chúng ta đã hoàn thành việc mã hóa dữ liệu để trao đổi an toàn hơn,thế còn việc giải mã thì sao nhỉ, chúng ta chỉ cần sử dụng method decrypt của Crypt là xong:
Xem thêm: 7 phương pháp dạy học tiếng việt theo hướng phát triển năng lực hiệu quả – https://thomaygiat.com
public function decode(){ $data = ''; // chuỗi này chính là đoạn mã hóa mà chúng cần giải mã return response()->json([ 'status' => 200, 'message' => 'success', 'data' => Crypt::decrypt($data) ],Response::HTTP_OK); }
tác dụng :
Tạm kết
Như vậy là tất cả chúng ta đã hoàn thành xong việc khám phá và mã hóa dữ liệu response cho API trong Laravel là như thế nào rồi đấy. Hãy đón chờ bài tiếp nối của mình nhé, chúc những bạn thành công xuất sắc .
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…