Sự nguy hiểm của sự phụ thuộc mã của bên thứ ba

Nếu bạn đăng ký một dịch vụ từ một liên kết trên trang này, Reeves and Sons Limited có thể kiếm được hoa hồng. Xem của chúng tôi Chuẩn mực đạo đức.

Có một vài điều thực sự tốt về cách thức hoạt động của phần mềm trên Internet. Đầu tiên, có một mạng lưới không chính thức khổng lồ gồm hàng triệu người đóng góp vào một kho lưu trữ khổng lồ các đoạn mã giúp cung cấp năng lượng cho thêm hàng triệu ứng dụng.

Mỗi khi bạn nhìn thấy một liên kết nhỏ ở cuối trang web có nội dung “Được cung cấp bởi So-And-So”, bạn đang chứng kiến ​​hiệu ứng hợp tác này đang hoạt động.

Và tất nhiên lý do chính khiến mọi người thích sự chia sẻ và cộng tác của bên thứ ba này là vì nó có thể giúp bạn tiết kiệm nhiều giờ trong thời gian phát triển vì bạn không phát minh lại thứ gì đó đã tồn tại.

Nhưng ngay cả với những lợi ích tuyệt vời này của hệ thống chia sẻ mã bên thứ ba, vẫn có rất nhiều lý do khiến bạn có thể muốn tránh sử dụng những đoạn mã đó, như chúng ta sắp thấy…

1. Rủi ro bảo mật tiềm ẩn

Bởi vì gần như tất cả mã điều khiển mọi thứ trên Web đều là nguồn mở, nên có thể chắc chắn rằng nếu có bất kỳ tải trọng độc hại nào trong một ứng dụng nhất định, nó sẽ nhanh chóng bị cộng đồng nhà phát triển phát hiện và nhanh chóng sửa chữa.

Nhưng nhiều đoạn mã trong số này được tải xuống hàng trăm, thậm chí hàng nghìn lần mỗi ngày và không phải nhóm quản trị nào cũng làm tốt công việc duy trì hệ thống chia sẻ mã an toàn.

Ứng dụng càng lớn và phức tạp thì càng dễ bị lây nhiễm bằng cách thêm một vài dòng mã vào một nơi ít người biết đến. Hầu như không ai dành thời gian để xem xét kỹ lưỡng từng dòng mã trong một ứng dụng, bởi vì họ thường cho rằng mã đó có thể đáng tin cậy.

Một lập trình viên có tay nghề cao thường có thể làm tốt công việc làm xáo trộn bản chất độc hại của mã và chỉ một lập trình viên có tay nghề cao khác mới tìm ra mục đích của nó là gì… nếu đoạn mã độc hại được phát hiện.

2. Bạn không sở hữu nó

Đây thực sự là sự kết hợp của các vấn đề. Đầu tiên là bạn có thể phải tuân theo các điều khoản cấp phép khác nhau. Khi bạn sử dụng nhiều đoạn mã trong một trang web hoặc ứng dụng, trên thực tế, bạn có thể phải tuân theo nhiều điều khoản và điều kiện cấp phép khác nhau và một số đoạn mã này thực sự có thể xung đột với nhau.

Tất nhiên hiếm có ai bận tâm đến việc đọc danh sách các điều khoản và điều kiện tẻ nhạt này, nhưng đó có thể là một sai lầm.

Đặc biệt, sẽ là một sai lầm nếu một số điều kiện trong thỏa thuận cấp phép khiến bạn vi phạm một số luật ở quốc gia của bạn hoặc ở quốc gia nơi đặt máy chủ của bạn.

Vấn đề khác là nếu bạn không sở hữu mã, bạn không có quyền kiểm soát nó và bạn có thể không nhất thiết phải hiểu mọi thứ nó làm hoặc cách nó hoạt động.

Điều đó có nghĩa là nếu ai đó thực hiện một số thay đổi đối với mã, bạn có thể bị mắc kẹt với thay đổi đó, đặc biệt nếu bạn cài đặt trung thực các bản cập nhật, bản vá lỗi, bản nâng cấp và phiên bản mới ngay khi chúng được phát hành ở trạng thái ổn định hoặc nếu bạn hoàn toàn dựa vào việc phân phối nội dung mạng cho các giải pháp của bên thứ ba của bạn.

3. Bạn thường nhận được nhiều hơn mức bạn cần

Mã của bên thứ ba thường hoạt động để thực hiện công việc bạn muốn, nhưng đôi khi nó chứa tất cả các loại tính năng bổ sung mà bạn không cần và có thể sẽ không bao giờ sử dụng.

Trong một số trường hợp, bạn không thể loại bỏ những tính năng bổ sung đó một cách dễ dàng hoặc thậm chí không thể loại bỏ được. Bạn cũng có thể phải thỏa hiệp. Tính năng này có thể thực hiện điều gì đó rất gần với những gì bạn dự định nhưng không chính xác như những gì bạn dự định. Bạn đang đánh đổi sự tuyệt vời để có ít việc phải làm hơn và đó không phải lúc nào cũng là một giao dịch tốt.

4. Nhiều mức độ phụ thuộc vào bên thứ ba có thể dẫn đến rắc rối thực sự

Nhiều dự án nguồn mở sử dụng cùng các đoạn mã của bên thứ ba theo những cách khác nhau để sản xuất phần mềm của họ. Hầu hết thời gian đó không phải là điều xấu, nhưng nó có thể dẫn đến rắc rối.

Ngày nay, nhiều nhà phát triển thậm chí không cài đặt các đoạn mà họ đang sử dụng mà lấy chúng từ các mạng phân phối nội dung theo yêu cầu trong thời gian chạy. Sự nguy hiểm của điều này đã được minh họa một cách ngoạn mục bởi Sự cố Left-Pad năm 2016.

Mỗi chuỗi chỉ mạnh bằng mắt xích yếu nhất của nó. Chuỗi phụ thuộc này có nghĩa là nếu bất kỳ liên kết nào dọc theo chuỗi bị hỏng hoặc bị xâm phạm thì toàn bộ chuỗi có nguy cơ gặp trục trặc. Trong một số tình huống có thể khá tốn kém.

Không ai có thể nghi ngờ sức mạnh chứa đựng trong 11 dòng mã chứa trong chức năng nhỏ bé lành tính có tên Left-Pad đó, nhưng khi chuỗi liên kết cụ thể đó thất bại, nó đã khiến nhiều trang web lớn phải ngừng hoạt động.

Phần lớn vấn đề là hầu hết những người đang sử dụng Left-Pad đều không biết họ đang sử dụng nó, nó có tác dụng gì hoặc cách khắc phục sự cố. Như đã nêu ở mục 2, nếu bạn không sở hữu nó thì chưa chắc bạn đã hiểu được nó.

Left-Pad là một chức năng rất đơn giản, chỉ cần thêm một vài khoảng trắng vào bên trái của dòng để đảm bảo dòng có độ dài chính xác. Vấn đề ở đây là bất kỳ lập trình viên có năng lực nào cũng có thể sao chép chức năng đó một cách dễ dàng.

Hoàn toàn không cần bất kỳ ứng dụng nào phải phụ thuộc vào chức năng của bên thứ ba này và vẫn có hàng nghìn trang web đang sử dụng phần mềm có chứa nó, bao gồm Netflix, Facebook và Reddit. Thật may mắn khi trong trường hợp này, chính một hàm rất đơn giản đã phá vỡ chuỗi chứ không phải một hàm thực sự phức tạp nào đó có chuỗi phụ thuộc riêng.

Điểm mấu chốt là nếu bạn có thể tự xây dựng nó, có lẽ bạn nên làm như vậy!

Cuối cùng, quyết định về việc có sử dụng khối mã của bên thứ ba trong dự án của bạn hay không phụ thuộc vào một loạt các quyết định phức tạp không bao giờ được xem nhẹ. Các yếu tố bạn cần quan tâm là tính bảo mật, tính pháp lý, chi phí, thời gian và tính ổn định.

Để làm cho quá trình quyết định trở nên đơn giản hơn, điều kiện kiểm tra sau đây có thể sẽ hữu ích.

NẾU bất kỳ yếu tố nào trong số này là đúng:

  • chức năng bạn muốn rất đơn giản
  • bạn (hoặc nhóm của bạn) có khả năng tạo ra chức năng
  • có nhiều thời gian để tạo ra chức năng
  • ứng dụng của bạn cần bảo mật tốt
  • bạn lo ngại về các vấn đề pháp lý tiềm ẩn liên quan đến việc cấp phép của bên thứ ba
  • điều quan trọng là ứng dụng của bạn không bao giờ bị lỗi

THÌ bạn nên tự xây dựng nó,

ELSE, việc sử dụng các chức năng của bên thứ ba có thể hiệu quả hơn, miễn là bạn nhận thức được các vấn đề tiềm ẩn và bạn có sẵn chiến lược cho những gì bạn sẽ làm nếu những vấn đề đó phát sinh.

Bogdan Rancea

Bogdan là thành viên sáng lập của Inspired Mag, đã tích lũy được gần 6 năm kinh nghiệm trong giai đoạn này. Trong thời gian rảnh rỗi, anh thích học nhạc cổ điển và khám phá nghệ thuật thị giác. Anh ấy cũng khá bị ám ảnh bởi việc sửa chữa. Anh ấy đã sở hữu 5 rồi.

Nhận xét Responses 0

Bình luận

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *

Xêp hạng *

Trang web này sử dụng Akismet để giảm spam. Tìm hiểu cách xử lý dữ liệu nhận xét của bạn.