0
0
Lập trình
Admin Team
Admin Teamtechmely

Hệ Lụy Khi Gửi Mã Nhanh Chóng: Cảnh Giác Đối Với Lập Trình Viên

Đăng vào 1 tháng trước

• 3 phút đọc

Giới thiệu

Trong phát triển phần mềm, có một quy tắc vàng mà mọi lập trình viên mới đều học trong tháng đầu tiên: “Không bao giờ gửi mã chưa được kiểm tra lên môi trường sản xuất.” Nghe có vẻ đơn giản, nhưng thực tế không phải lúc nào cũng vậy. Các công ty lớn, với hàng ngàn lập trình viên, đôi khi quên mất quy tắc này và hệ quả thường rất nghiêm trọng.

Và mới đây, một sự cố đã xảy ra với Reliance JioMart, một gã khổng lồ thương mại điện tử được hỗ trợ bởi Reliance. Dù JioMart chưa chính thức thừa nhận, nhưng người dùng đã phát hiện ra một lỗi mà họ đã tận dụng để thu lợi.

Sự Cố: Khi Khuyến Mãi Biến Thành Lỗ Hổng Tiền

JioMart đã phát động một chương trình khuyến mãi hấp dẫn: chi tiêu ₹101 trở lên, bạn sẽ nhận được giảm giá ₹100. Tuy nhiên, cách mà họ thiết lập chương trình này có một lỗ hổng chết người. Liên kết khuyến mãi không chỉ là một mã coupon một lần mà là một nhà máy coupon. Mỗi khi bạn nhấp vào liên kết hoặc điều chỉnh nó một chút, một mã coupon mới trị giá ₹100 sẽ được tạo ra và gửi đến tài khoản của bạn. Không giới hạn.

Người dùng nhanh chóng phát hiện ra lỗ hổng này và tận dụng nó. Các nhóm Telegram đã thấy cơ hội và biến nó thành tiền mặt. Họ bắt đầu bán hàng trăm, thậm chí hàng ngàn mã coupon miễn phí và sau đó bán chúng với giá ₹10-20 mỗi mã. Đây không chỉ là một khoản giảm giá, mà là một cơ hội đầu tư.

Điều Gì Đã Đi Sai?

Theo các báo cáo, lỗi dường như rất đơn giản. Liên kết mà họ gửi có một tham số truy vấn có thể chấp nhận bất kỳ giá trị ngẫu nhiên nào và vẫn tạo ra mã coupon mới. Có thể ai đó đã quên thêm một kiểm tra xác thực. Có thể phần kiểm thử đã bị bỏ qua do thời hạn gấp rút. Hoặc có thể nhóm phát triển nghĩ rằng, “Ai sẽ chú ý đến điều này?” (Câu trả lời: mọi người đều chú ý.)

Hậu Quả: Máy Chủ Sập, Coupon Tràn Lan

Khi tin tức lan truyền, hỗn loạn đã xảy ra. Hệ thống giỏ hàng của JioMart đã gặp sự cố khi hàng ngàn người dùng cùng lúc tạo ra mã coupon và đặt hàng. Đối với khách hàng, đó giống như một ngày lễ đến sớm. Đối với JioMart, đó giống như một cuộc tấn công DDoS—nhưng không phải do bot, mà là do những người thực sự muốn có coupon.

Bài Học Cho Lập Trình Viên

  1. Xác thực là điều thiêng liêng. Không bao giờ tin tưởng đầu vào từ phía client. Nếu backend của bạn chấp nhận một cách mù quáng, bạn đang mời gọi hỗn loạn.
  2. Tình huống lạm dụng là có thật. Khi thiết kế hệ thống, hãy suy nghĩ về cách mà người ta có thể lạm dụng nó.
  3. Kiểm thử không phải là tùy chọn. Hãy nhớ rằng chi phí của việc gửi mã không kiểm tra có thể lớn gấp nhiều lần chi phí của việc trì hoãn.
  4. Tính minh bạch quan trọng. JioMart đã chọn im lặng, nhưng nếu họ thừa nhận một cách nhẹ nhàng, có thể họ sẽ nhận được nhiều thiện cảm hơn từ người dùng.

Kết Luận

Sự cố này là một ví dụ hoàn hảo về cách một giả định chưa được kiểm tra có thể dẫn đến khủng hoảng. Đối với lập trình viên, đây là một bài học cảnh báo. Còn đối với người dùng, đây là một cơ hội mua sắm không thể quên. Hãy luôn nhớ rằng: Bạn có thể kiểm tra mã của mình hoặc để người dùng kiểm tra chúng cho bạn—và họ sẽ làm điều đó với nhiều sự sáng tạo hơn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào