Bahaya Ketergantungan Kod Pihak Ketiga

Terdapat beberapa perkara yang sangat baik mengenai cara perisian berfungsi di Internet. Sebagai permulaan, terdapat rangkaian besar tidak rasmi berjuta-juta orang yang menyumbang kepada repositori serpihan kod yang besar yang membantu mengaktifkan banyak lagi jutaan aplikasi.

Setiap kali anda melihat sedikit pautan di bahagian bawah laman web yang bertuliskan "Dikuasakan oleh So-And-So", anda menyaksikan kesan kolaboratif ini dalam tindakan.

Dan tentu saja sebab utama orang menyukai perkongsian dan kolaborasi pihak ketiga ini adalah kerana ia dapat menjimatkan masa berjam-jam dalam masa pembangunan, kerana anda tidak mencipta semula sesuatu yang sudah ada. Tetapi walaupun dengan faedah besar sistem perkongsian kod pihak ketiga ini, terdapat banyak sebab mengapa anda mungkin ingin mengelakkan penggunaan fragmen kod tersebut, kerana kita akan melihat…

1. Risiko keselamatan yang berpotensi

Oleh kerana hampir semua kod yang mendorong apa-apa di Web adalah sumber terbuka, itu adalah pertimbangan yang wajar bahawa jika terdapat muatan jahat dalam aplikasi tertentu, ia akan cepat ditemukan oleh komuniti pemaju dan cepat dibetulkan.

Tetapi banyak fragmen kod ini dimuat beratus-ratus atau bahkan ribuan kali sehari, dan tidak setiap pasukan pentadbiran melakukan tugas yang baik untuk mengekalkan sistem perkongsian kod yang selamat.

Semakin besar dan kompleksnya aplikasi, semakin mudah menjangkiti dengan menambahkan beberapa baris kode di beberapa tempat yang tidak jelas. Hampir tidak ada yang meluangkan masa untuk meneliti setiap baris kod dalam aplikasi, kerana mereka umumnya menganggap kod itu dapat dipercaya.

Seorang pengaturcara yang berkemahiran tinggi biasanya dapat melakukan tugas yang baik untuk menyamarkan sifat kod yang berniat jahat, dan hanya seorang pengaturcara lain yang berkemahiran tinggi akan mengetahui tujuannya… jika pecahan kod jahat dikesan.

2. Anda tidak memilikinya

Ini sebenarnya adalah gabungan masalah. Yang pertama adalah bahawa anda mungkin dikenakan pelbagai syarat pelesenan. Apabila anda mempunyai beberapa fragmen kod yang digunakan dalam satu laman web atau aplikasi, anda sebenarnya mungkin dikenakan beberapa terma dan syarat pelesenan yang berbeza, dan beberapa di antaranya sebenarnya bertentangan antara satu sama lain.

Sudah tentu hampir tidak ada yang terganggu untuk membaca senarai terma dan syarat yang membosankan ini, tetapi itu berpotensi menjadi kesalahan. Terutama adalah suatu kesalahan jika beberapa syarat dalam perjanjian lesen menyebabkan anda melanggar undang-undang di negara asal atau di negara tempat pelayan anda berada.

Masalah lain ialah jika anda tidak memiliki kod, anda tidak mempunyai kawalan ke atasnya, dan anda mungkin tidak semestinya memahami semua yang dilakukannya atau bagaimana ia berfungsi. Ini bermaksud jika seseorang membuat perubahan pada kod, anda mungkin akan terjebak dengan perubahan itu, terutamanya jika anda memasang kemas kini, tambalan, peningkatan dan versi baru dengan setia sebaik sahaja dilancarkan sebagai stabil, atau jika anda bergantung sepenuhnya pada penyampaian kandungan rangkaian untuk penyelesaian pihak ketiga anda.

3. Anda sering mendapat lebih banyak daripada yang anda perlukan

Kod pihak ketiga biasanya berfungsi untuk melakukan pekerjaan yang anda mahukan, tetapi kadang kala ia mengandungi semua jenis ciri tambahan yang anda tidak perlukan dan mungkin tidak akan pernah digunakan. Dalam beberapa kes, anda tidak dapat membuang ciri tambahan itu dengan mudah atau sama sekali. Anda mungkin juga harus berkompromi. Ciri ini mungkin melakukan sesuatu yang hampir dengan apa yang anda berhasrat, tetapi tidak dengan tepat yang anda mahukan. Anda berniaga dengan hebat kerana tidak mempunyai banyak pekerjaan yang perlu dilakukan, dan itu bukan perdagangan yang bagus.

4. Pelbagai tahap kebergantungan pihak ketiga boleh menyebabkan masalah sebenar

Banyak projek sumber terbuka menggunakan serpihan kod pihak ketiga yang sama dengan cara yang berbeza untuk menghasilkan perisian mereka. Selalunya itu bukan perkara buruk, tetapi boleh menimbulkan masalah. Hari-hari ini, banyak pembangun bahkan tidak memasang fragmen yang mereka gunakan, tetapi menariknya pada masa berjalan dari rangkaian penghantaran kandungan berdasarkan permintaan. Bahaya ini digambarkan secara spektakuler oleh Kejadian Pad Kiri 2016.

Setiap rantai hanya sekuat hubungannya yang paling lemah. Rantai kebergantungan ini bermaksud bahawa jika ada pautan di mana sahaja di sepanjang rantai itu rosak atau terganggu, seluruh rantai berisiko mengalami kerosakan. Dalam beberapa keadaan, ia mungkin agak mahal. Tidak ada yang akan mengesyaki kekuatan yang terdapat dalam 11 baris kod yang terkandung dalam fungsi kecil jinak yang disebut Left-Pad, tetapi ketika pautan rantai itu gagal, ia menyebabkan banyak laman web besar terhenti. Bahagian utama adalah bahawa kebanyakan orang yang menggunakan Left-Pad tidak tahu mereka menggunakannya, apa yang dilakukannya, atau bagaimana menyelesaikan masalahnya. Seperti yang dinyatakan pada item 2, jika anda tidak memilikinya, anda tidak semestinya memahaminya.

Pad Kiri adalah fungsi yang sangat sederhana yang hanya menambah beberapa ruang di sebelah kiri garis untuk memastikan garis panjangnya betul. Masalahnya di sini adalah bahawa mana-mana pengaturcara yang kompeten dapat meniru fungsi tersebut dengan mudah. Sama sekali tidak perlu ada aplikasi yang bergantung pada fungsi pihak ketiga ini, namun ribuan laman web menggunakan perisian yang menyertakannya, termasuk Netflix, Facebook, dan Reddit. Ini hanya keberuntungan kerana dalam hal ini fungsi yang sangat sederhana yang memutuskan rantai, dan bukan fungsi yang sangat rumit yang mempunyai rantai kebergantungannya sendiri.

Intinya adalah jika anda boleh membinanya sendiri, anda mungkin harus!

Pada akhirnya keputusan mengenai sama ada akan menggunakan blok kod pihak ketiga dalam projek anda datang kepada serangkaian keputusan rumit yang tidak boleh dipandang ringan. Faktor yang perlu anda pertimbangkan adalah keselamatan, kesahan, kos, masa dan kestabilan.

Untuk menjadikan proses keputusan lebih mudah, keadaan ujian berikut mungkin akan membantu.

JIKA ada faktor ini benar:

  • fungsi yang anda mahukan adalah mudah
  • anda (atau pasukan anda) mempunyai kemampuan untuk membuat fungsi tersebut
  • ada banyak masa untuk membuat fungsi
  • aplikasi anda memerlukan keselamatan yang baik
  • anda mempunyai kebimbangan mengenai kemungkinan masalah undang-undang yang berkaitan dengan pelesenan pihak ketiga
  • adalah mustahak agar aplikasi anda tidak pernah gagal

KEMUDIAN anda harus membinanya sendiri,

TETAPI mungkin lebih efisien untuk menggunakan fungsi pihak ketiga, dengan syarat anda menyedari kemungkinan masalah dan anda mempunyai strategi untuk melakukan apa yang akan anda lakukan sekiranya masalah tersebut timbul.

gambar header milik Stephanie Tucker

Bogdan Rancea

Bogdan adalah ahli pengasas Inspired Mag, yang telah mengumpulkan hampir 6 tahun pengalaman dalam tempoh ini. Pada masa lapang dia suka belajar muzik klasik dan mendalami seni visual. Dia juga taksub dengan fixies juga. Dia sudah memiliki 5 orang.