Mặc định có thể nhấn chìm bạn
Tóm lại: Hãy coi những phản hồi không xác định là trái phép, không phải là hợp lệ.
Hôm nay là ngày an ninh máy tính và mọi lập trình viên cần phải thừa nhận trách nhiệm của mình.
Hãy tưởng tượng một ứng dụng xử lý bán hàng dựa vào nhóm phản hồi từ bộ xử lý thẻ tín dụng để xử lý các giao dịch.
Mỗi bộ xử lý thẻ tín dụng đều cung cấp mã phản hồi được xác định trước cho nhiều tình huống khác nhau, chẳng hạn như số dư không đủ hoặc thẻ hết hạn.
Sự cố bắt đầu khi bộ xử lý thêm mã phản hồi mới cho các giao dịch bị từ chối nhưng không thông báo cho nền tảng.
Ứng dụng không nhận dạng được mã mới, mặc định coi mã là "không tìm thấy" và cho phép mua hàng.
Người dùng nhận thấy lỗi này và lợi dụng nó để thực hiện các giao dịch mua trái phép.
Doanh thu của nền tảng giảm mạnh, dẫn đến phá sản.
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; default: // Authorize purchase break; }
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "APPROVED": // Authorize purchase break; case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; case "DECLINED_NEW_REASON": // Handle new declined reason break; default: // Reject purchase (default case for unknown responses) break; }
Bạn có thể phát hiện ra lỗi này bằng cách xem xét logic xử lý lỗi.
Kiểm tra xem hệ thống có ghi lại và từ chối những trường hợp không được nhận dạng hay không.
Các bài kiểm tra tự động có thể giúp xác định xem các đầu vào mới hoặc bất ngờ có mặc định là hành động hợp lệ hay không.
Các công cụ phân tích tĩnh có thể giúp đánh dấu việc xử lý lỗi có khả năng chưa hoàn thiện.
Điều quan trọng là phải duy trì sự tương ứng một-một giữa biểu diễn nội bộ của ứng dụng về phản hồi của bộ xử lý thanh toán và mã thực tế do bộ xử lý trả về.
Khi bạn phá vỡ Song ánh xạ , bạn sẽ tạo ra sự không phù hợp.
Ứng dụng giải thích sai các mã không xác định, dẫn đến hành vi không mong muốn, lỗ hổng bảo mật và hậu quả kinh doanh có thể thảm khốc.
Các công cụ AI có thể tạo ra mùi này nếu bạn không chỉ định cách xử lý các trường hợp chưa biết.
Ví dụ, việc xử lý lỗi chung có thể mặc định là kết quả lành tính như "không tìm thấy" hoặc "thành công".
Máy phát AI có thể khắc phục tình trạng này khi bạn hướng dẫn chúng xử lý các trường hợp chưa biết là trái phép và nhấn mạnh vào việc ghi nhật ký và thử nghiệm các tình huống bất ngờ.
Hãy nhớ: Trợ lý AI mắc rất nhiều lỗi
Không có hướng dẫn đúng đắn | Với hướng dẫn cụ thể |
---|---|
Luôn xử lý những trường hợp chưa biết một cách thận trọng.
Các giá trị mặc định như "không tìm thấy" có thể dẫn đến các vấn đề bảo mật nghiêm trọng và tổn thất tài chính.
Hãy biến việc ghi nhật ký và từ chối các phản hồi không xác định thành một phần trong hoạt động phát triển của bạn.
Đưa ra quyết định dịch chuyển sang trái liên quan đến bảo mật trong khi lập trình.
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352
Code Smells là ý kiến của tôi.
Ảnh của Nathana Rebouças trên Bapt
https://www.youtube.com/watch?v=J2QOejhA6ek
Giả định là mẹ của mọi thất bại.
Ouissal nói
Trích dẫn tuyệt vời về Kỹ thuật phần mềm
Bài viết này là một phần của Series CodeSmell.
Làm thế nào để tìm ra những phần có mùi hôi thối trong mã của bạn