Οι κίνδυνοι της εξάρτησης κώδικα τρίτων

Υπάρχουν μερικά πραγματικά καλά πράγματα σχετικά με τον τρόπο λειτουργίας του λογισμικού στο Διαδίκτυο. Για αρχή, υπάρχει ένα τεράστιο ανεπίσημο δίκτυο εκατομμυρίων ανθρώπων που συμβάλλει σε ένα τεράστιο αποθετήριο θραυσμάτων κώδικα που βοηθούν στην τροφοδοσία πολλών ακόμη εκατομμυρίων εφαρμογών.

Κάθε φορά που βλέπετε έναν μικρό σύνδεσμο στο κάτω μέρος μιας ιστοσελίδας που λέει "Powered by So-And-So", βλέπετε αυτό το συνεργατικό αποτέλεσμα στη δράση.

Και φυσικά ο κύριος λόγος για τον οποίο αρέσει σε αυτό το τρίτο μέρος η κοινή χρήση και η συνεργασία είναι ότι μπορεί να σας εξοικονομήσει πολλές ώρες σε χρόνο ανάπτυξης, επειδή δεν επινοείτε ξανά κάτι που υπάρχει ήδη. Αλλά ακόμη και με αυτά τα μεγάλα οφέλη του συστήματος κοινής χρήσης κώδικα τρίτων, υπάρχουν πολλοί λόγοι για τους οποίους μπορεί να θέλετε να αποφύγετε τη χρήση αυτών των θραυσμάτων κώδικα, καθώς πρόκειται να δούμε…

1. Πιθανοί κίνδυνοι ασφαλείας

Επειδή σχεδόν όλοι οι κώδικες που οδηγούν οτιδήποτε στο Διαδίκτυο είναι ανοιχτού κώδικα, είναι δίκαιο στοίχημα ότι εάν υπάρχει κακόβουλο ωφέλιμο φορτίο σε μια δεδομένη εφαρμογή, θα ανακαλυφθεί γρήγορα από την κοινότητα προγραμματιστών και θα διορθωθεί γρήγορα.

Αλλά πολλά από αυτά τα τμήματα κώδικα κατεβάζονται εκατοντάδες ή και χιλιάδες φορές την ημέρα, και δεν είναι κάθε διοικητική ομάδα καλή δουλειά για τη διατήρηση ενός ασφαλούς συστήματος κοινής χρήσης κώδικα.

Όσο μεγαλύτερη και πιο περίπλοκη είναι μια εφαρμογή, τόσο πιο εύκολο είναι να την μολύνει προσθέτοντας μερικές γραμμές κώδικα σε κάποιο σκοτεινό μέρος. Σχεδόν κανείς δεν αφιερώνει χρόνο για να ελέγξει κάθε γραμμή κώδικα σε μια εφαρμογή, επειδή γενικά υποθέτει ότι ο κώδικας μπορεί να είναι αξιόπιστος.

Ένας προγραμματιστής με υψηλή εξειδίκευση μπορεί συνήθως να κάνει καλή δουλειά να συγκαλύψει την κακόβουλη φύση του κώδικα και μόνο ένας άλλος προγραμματιστής με υψηλή εξειδίκευση θα καταλάβει ποιος είναι ο σκοπός του… εάν εντοπιστεί το κακόβουλο τμήμα κώδικα.

2. Δεν το έχετε

Αυτός είναι στην πραγματικότητα ένας συνδυασμός προβλημάτων. Το πρώτο είναι ότι ενδέχεται να υπόκειται σε διάφορους όρους αδειοδότησης. Όταν χρησιμοποιείτε πολλά τμήματα κώδικα σε μία μόνο ιστοσελίδα ή εφαρμογή, ενδέχεται να υπόκεινται σε πολλούς διαφορετικούς όρους και προϋποθέσεις αδειοδότησης και ορισμένα από αυτά ενδέχεται να βρίσκονται σε διένεξη μεταξύ τους.

Φυσικά σχεδόν κανένας δεν ενοχλεί να διαβάσει αυτούς τους κουραστικούς καταλόγους όρων και προϋποθέσεων, αλλά αυτό μπορεί ενδεχομένως να είναι λάθος. Συγκεκριμένα, θα ήταν λάθος εάν κάποιος όρος στη συμφωνία άδειας χρήσης σας έκανε να παραβιάσετε κάποιο νόμο στη χώρα καταγωγής σας ή στη χώρα όπου βρίσκεται ο διακομιστής σας.

Το άλλο ζήτημα είναι ότι εάν δεν διαθέτετε κώδικα, δεν έχετε κανέναν έλεγχο σε αυτόν και ίσως να μην καταλαβαίνετε απαραίτητα όλα όσα κάνει ή πώς λειτουργεί. Αυτό σημαίνει ότι εάν κάποιος κάνει κάποια αλλαγή στον κώδικα, μπορεί να έχετε κολλήσει με αυτήν την αλλαγή, ειδικά εάν εγκαταστήσετε πιστά ενημερώσεις, ενημερώσεις κώδικα, αναβαθμίσεις και νέες εκδόσεις μόλις κυκλοφορήσουν ως σταθερές ή εάν βασίζεστε αποκλειστικά στην παράδοση περιεχομένου δίκτυα για λύσεις τρίτων.

3. Συχνά παίρνετε πολύ περισσότερα από όσα χρειάζεστε

Ο κωδικός τρίτου μέρους συνήθως λειτουργεί για να κάνει τη δουλειά που θέλετε, αλλά μερικές φορές περιέχει όλα τα είδη πρόσθετων δυνατοτήτων που δεν χρειάζεστε και πιθανότατα δεν θα χρησιμοποιήσετε ποτέ. Σε ορισμένες περιπτώσεις δεν μπορείτε να καταργήσετε αυτές τις επιπλέον δυνατότητες εύκολα ή ακόμα και καθόλου. Ίσως χρειαστεί επίσης να συμβιβαστείτε. Η δυνατότητα μπορεί να κάνει κάτι πολύ κοντά σε αυτό που σκοπεύετε, αλλά όχι ακριβώς αυτό που σκοπεύετε. Συναλλάσσεστε απροσδόκητα χάρη στο ότι έχετε λιγότερη δουλειά και αυτό δεν είναι πάντα καλό εμπόριο.

4. Πολλαπλά επίπεδα εξάρτησης από τρίτους μπορεί να οδηγήσουν σε πραγματικά προβλήματα

Πολλά έργα ανοιχτού κώδικα χρησιμοποιούν τα ίδια τμήματα κώδικα τρίτων με διαφορετικούς τρόπους για την παραγωγή του λογισμικού τους. Τις περισσότερες φορές αυτό δεν είναι κακό, αλλά μπορεί να οδηγήσει σε προβλήματα. Αυτές τις μέρες, πολλοί προγραμματιστές δεν εγκαθιστούν καν τα θραύσματα που χρησιμοποιούν, αλλά τα τραβούν στο χρόνο εκτέλεσης από τα δίκτυα παράδοσης περιεχομένου κατά παραγγελία. Ο κίνδυνος αυτού απεικονίστηκε θεαματικά από το περιστατικό Left-Pad του 2016.

Κάθε αλυσίδα είναι τόσο ισχυρή όσο ο πιο αδύναμος κρίκος της. Αυτή η αλυσίδα εξαρτήσεων σημαίνει ότι εάν κάποιος σύνδεσμος οπουδήποτε κατά μήκος της αλυσίδας έχει σπάσει ή παραβιαστεί, ολόκληρη η αλυσίδα κινδυνεύει να παρουσιάσει δυσλειτουργία. Σε ορισμένες καταστάσεις που θα μπορούσαν να είναι αρκετά δαπανηρές. Κανείς δεν θα μπορούσε να υποψιάζεται τη δύναμη που περιέχεται στις 11 γραμμές κώδικα που περιέχονται σε αυτήν την καλοήθη μικρή λειτουργία που ονομάζεται Left-Pad, αλλά όταν απέτυχε αυτός ο συγκεκριμένος σύνδεσμος αλυσίδας, έκοψε πολλούς μεγάλους ιστότοπους. Το μεγαλύτερο μέρος του ήταν ότι οι περισσότεροι άνθρωποι που χρησιμοποιούσαν το Left-Pad δεν είχαν ιδέα ότι το χρησιμοποιούσαν, τι έκανε ή πώς να διορθώσουν το πρόβλημα. Όπως αναφέρεται στο σημείο 2, εάν δεν σας ανήκει, ίσως να μην το καταλαβαίνετε απαραίτητα.

Το Left-Pad ήταν μια πολύ απλή λειτουργία που προσθέτει μόνο μερικά κενά στην αριστερή πλευρά μιας γραμμής για να βεβαιωθείτε ότι η γραμμή είναι το σωστό μήκος. Τώρα το ζήτημα εδώ είναι ότι οποιοσδήποτε αρμόδιος προγραμματιστής θα μπορούσε να αναπαραγάγει αυτή τη λειτουργικότητα εύκολα. Δεν υπάρχει απολύτως καμία ανάγκη για οποιαδήποτε εφαρμογή να εξαρτάται από αυτήν τη λειτουργία τρίτου μέρους, και όμως χιλιάδες ιστότοποι χρησιμοποιούν λογισμικό που το περιελάμβανε, συμπεριλαμβανομένων των Netflix, Facebook και Reddit. Ήταν απλώς μια καλή τύχη που σε αυτήν την περίπτωση ήταν μια πολύ απλή λειτουργία που έσπασε την αλυσίδα και όχι κάποια πολύ περίπλοκη λειτουργία που είχε τη δική της αλυσίδα εξαρτήσεων.

Η ουσία είναι αν μπορείτε να το φτιάξετε μόνοι σας, μάλλον θα πρέπει!

Τελικά, η απόφαση σχετικά με το αν θα χρησιμοποιήσετε μπλοκ κώδικα τρίτων στο έργο σας καταλήγει σε μια σειρά πολύπλοκων αποφάσεων που δεν πρέπει ποτέ να ληφθούν σοβαρά υπόψη. Οι παράγοντες που πρέπει να λάβετε υπόψη είναι η ασφάλεια, η νομιμότητα, το κόστος, ο χρόνος και η σταθερότητα.

Για να κάνετε τη διαδικασία λήψης αποφάσεων απλούστερη, η ακόλουθη συνθήκη δοκιμής πιθανώς θα βοηθήσει.

ΕΑΝ ισχύει κάποιος από αυτούς τους παράγοντες:

  • η λειτουργία που θέλετε είναι απλή
  • εσείς (ή η ομάδα σας) έχετε τη δυνατότητα να δημιουργήσετε τη λειτουργία
  • υπάρχει αρκετός χρόνος για τη δημιουργία της λειτουργίας
  • η εφαρμογή σας χρειάζεται καλή ασφάλεια
  • έχετε ανησυχίες σχετικά με πιθανά νομικά προβλήματα που σχετίζονται με την αδειοδότηση τρίτων
  • είναι σημαντικό η εφαρμογή σας να μην αποτύχει ποτέ

Τότε πρέπει να το χτίσετε μόνοι σας,

Διαφορετικά, μπορεί να είναι πιο αποτελεσματική η χρήση των λειτουργιών τρίτων, υπό την προϋπόθεση ότι γνωρίζετε τα πιθανά προβλήματα και έχετε μια στρατηγική για το τι θα κάνετε εάν προκύψουν αυτά τα προβλήματα.

Η εικόνα της κεφαλίδας είναι ευγενική προσφορά του Στέφανι Τούκερ

Μπογκντάν Ράνσα

Ο Bogdan είναι ιδρυτικό μέλος του Inspired Mag, έχοντας συγκεντρώσει σχεδόν 6 χρόνια εμπειρίας κατά τη διάρκεια αυτής της περιόδου. Στον ελεύθερο χρόνο του αρέσει να μελετά την κλασική μουσική και να εξερευνά εικαστικές τέχνες. Είναι επίσης πολύ παθιασμένος με τους fixies. Έχει ήδη 5.