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

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

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

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

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

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

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

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

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

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

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

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

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

Φυσικά, σχεδόν κανείς δεν μπαίνει στον κόπο να διαβάσει αυτές τις κουραστικές λίστες όρων και προϋποθέσεων, αλλά αυτό μπορεί ενδεχομένως να είναι λάθος.

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

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

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

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

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

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

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

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

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

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

Κανείς δεν θα υποψιαζόταν τη δύναμη που περιέχεται στις 11 γραμμές κώδικα που περιέχονται σε αυτή την καλοήθη μικρή λειτουργία που ονομάζεται Left-Pad, αλλά όταν αυτός ο συγκεκριμένος σύνδεσμος αλυσίδας απέτυχε, σταμάτησαν πολλές μεγάλες ιστοσελίδες.

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

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

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

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

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

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

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

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

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

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

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

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

Σχόλια απαντήσεις 0

Αφήστε μια απάντηση

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται *

Βαθμολογία *

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει το spam. Μάθετε πώς επεξεργάζονται τα δεδομένα των σχολίων σας.