UUID thiếu sót trong lập trình, đối thủ đã phát hiện kinh doanh của chúng tôi [backend service]

Nội dung bài viết

Video học lập trình mỗi ngày

UUID đã giúp đối thủ kinh doanh biết bí mật doanh thu của chúng tôi. Trong bài viết này, bạn sẽ nghe một mẩu chuyện có thật và hiểu hơn về UUID với Nodejs như thế nào?

Bỏ sót UUID, đối thủ đã biết tình hình kinh doanh của công ty Tôi

Nói cho hay rằng công ty chúng tôi và một công ty đối thủ ở bên ĐỨC đang là đối thủ cạnh tranh khốc liệt. Doanh số bán hàng được đảm bảo bí mật giữa hai công ty, chỉ khi báo cáo tài chính từng quý mới biết được doanh số như thế nào. Thế nhưng tình cờ chúng tôi phát hiện ra rằng đối thủ đã biết tình hình doanh số của chúng tôi trong mỗi tháng và từ đó tính ra trung bình mỗi quý. Đó là một cơ hội cho họ để tính toán lại những con số. Vậy họ làm thế nào?

Rất đơn giản, khi một khách hàng đăng ký làm sử dụng, chúng tôi vô tình sử dụng id làm số nguyên. Và mỗi khách hàng đăng ký thì id đó tự tăng theo số nguyên. Do đó đối thủ chúng tôi sẽ quan sát đầu tháng và cuối tháng và từ đó sẽ tính ra được mỗi tháng chúng tôi thu về bao nhiêu khách hàng. Ví dụ :

Nếu id ngày 01/03/2022 là 100 và id vào ngày 30/03/2022 là 400. Bạn có thể làm phép tính đơn giản và nhanh chóng biết được trong tháng 3, chúng tôi đã có 300 khách hàng.

Và vô tình bạn đã giúp cho đối thủ biết được một kẽ sơ hở... Vậy đối phó thế nào, chúng ta tiếp tục bàn qua...

Khi nào sử dụng UUID

Trên đó là một trong nhiều tình huống mà chúng ta gặp phải, chính vì vậy mỗi coder cũng nên tập xác định dấu id một cách hoàn hảo, tốt nhất là nên sử dụng một số ngẫu nhiên nào đó khó đoán, nếu không muốn nói là không đoán được. Ngoài ra nếu cảm thấy khó và tốn thời gian suy nghĩ thì bạn có thể sử dụng UUID.

Nếu bạn muốn đọc thêm về UUID, vui lòng đọc bài viết của tôi về UUID và cách triển khai. Ngoài ra các bạn cũng có thể sử dụng những package rất tốt trong nodejs dưới đây là một số gợi ý cho bạn.

UUID với nodejs

crypto Module này đã được thêm từ Node.js 14.17.0

const crypto = require('crypto');
console.log(crypto.randomUUID());

uuid - Module

const uuid = require('uuid');
console.log(`Here is a test v1 uuid: ${uuid.v1()}`);
console.log(`Here is a test v4 uuid: ${uuid.v4()}`);

nanoid - Module

const Nanoid = require('nanoid');
const NanoidAsync = require('nanoid/async');

console.log(`UUID with Nano ID sync: ${Nanoid.nanoid()}`);

(async function() {
  const nanoId = await NanoidAsync.nanoid();
  console.log(`UUID with Nano ID async: ${nanoId}`);
})();

Ngoài ra bạn có thể tự code cho mình một vài phương pháp thủ công như bài viết này.

Tham khảo thêm:

geshan.com.np

uuid là gì? 6 dòng code thực hiện nhanh chóng

Có thể bạn đã bị missing