サードパーティのコード依存の危険性

このページのリンクからサービスに加入すると、Reeves and SonsLimitedがコミッションを獲得する場合があります。 私たちを参照してください 倫理声明.

ソフトウェアがインターネット上で機能する方法について、いくつかの本当に良い点があります。 まず、数百万人の巨大な非公式ネットワークがあり、コードフラグメントの巨大なリポジトリに貢献しており、これにより、さらに多くの数百万のアプリケーションを強化できます。

ウェブページの下部に「PoweredbySo-And-So」という小さなリンクが表示されるたびに、このコラボレーション効果が実際に機能しているのを目の当たりにしています。

そしてもちろん、人々がこのサードパーティの共有とコラボレーションを好む主な理由は、すでに存在するものを再発明するわけではないため、開発時間を何時間も節約できるからです。

しかし、サードパーティのコード共有システムにはこれらの大きな利点があるにもかかわらず、これから説明するように、これらのコードの断片の使用を避けたい理由はたくさんあります。

1. 潜在的なセキュリティリスク

Web上で何かを駆動するほぼすべてのコードはオープンソースであるため、特定のアプリケーションに悪意のあるペイロードが存在する場合、開発者コミュニティによって迅速に発見され、迅速に修正されることは間違いありません。

しかし、これらのコードフラグメントの多くはXNUMX日に数百または数千回もダウンロードされ、すべての管理チームが安全なコード共有システムを維持するために優れた仕事をしているわけではありません。

アプリケーションが大きくて複雑であるほど、あいまいな場所に数行のコードを追加することで、アプリケーションへの感染が容易になります。 彼らは一般にコードが信頼できると想定しているので、ほとんど誰もアプリケーションのコードのすべての行を精査するために時間をかけません。

高度なスキルを持つプログラマーは通常、コードの悪意のある性質を難読化するのに優れた仕事をすることができ、悪意のあるコードフラグメントが検出された場合、その目的が何であるかを理解できるのは別の高度なスキルを持つプログラマーだけです。

2.あなたはそれを所有していません

これは実際には問題の組み合わせです。 XNUMXつ目は、さまざまなライセンス条件が適用される可能性があることです。 単一のWebページまたはアプリケーションで複数のコードフラグメントを使用している場合、実際には複数の異なるライセンス契約条件が適用される可能性があり、これらのいくつかは実際には互いに矛盾している可能性があります。

もちろん、このような面倒な利用規約のリストをわざわざ読む人はほとんどいませんが、それは潜在的に間違いである可能性があります。

特に、ライセンス契約の条件によって、母国またはサーバーが設置されている国の法律に違反する場合は間違いです。

もう XNUMX つの問題は、コードを所有していない場合、そのコードを制御することができず、コードの動作や動作のすべてを必ずしも理解できるとは限らないことです。

つまり、誰かがコードに何らかの変更を加えた場合、特にアップデート、パッチ、アップグレード、および新しいバージョンが安定版としてリリースされるとすぐに忠実にインストールする場合、またはコンテンツ配信に完全に依存している場合には、その変更が適用されなくなる可能性があります。サードパーティソリューションのネットワーク。

3.多くの場合、必要以上の効果が得られます

サードパーティのコードは通常、必要な機能を実行するために機能しますが、場合によっては、必要のない、おそらく決して使用されないあらゆる種類の追加機能が含まれていることもあります。

場合によっては、これらの追加機能を簡単に削除できない、またはまったく削除できない場合もあります。 妥協も必要かもしれません。 この機能は、ユーザーの意図に非常に近いことを行う可能性がありますが、正確にはユーザーの意図したものではありません。 やるべき仕事を減らすために、素晴らしさを引き換えにすることになりますが、それは必ずしも良い取引とは限りません。

4.サードパーティの依存関係が複数のレベルにあると、実際に問題が発生する可能性があります

多くのオープンソース プロジェクトは、ソフトウェアを作成するために同じサードパーティのコード フラグメントをさまざまな方法で使用しています。 ほとんどの場合、それは悪いことではありませんが、トラブルにつながる可能性があります。

最近では、多くの開発者が使用しているフラグメントをインストールすることさえせず、実行時にオンデマンドでコンテンツ配信ネットワークからフラグメントをプルしています。 この危険性は、2016 年のレフトパッド事件によって見事に示されました。

すべてのチェーンの強さは、その最も弱いリンクと同じです。 この依存関係の連鎖は、チェーン上のいずれかのリンクが壊れたり侵害されたりすると、チェーン全体が誤動作する危険にさらされることを意味します。 状況によっては、かなりの費用がかかる可能性があります。

Left-Pad と呼ばれるその無害な小さな機能に含まれる 11 行のコードに含まれる力を疑う人は誰もいなかっただろう。しかし、その特定のチェーン リンクに障害が発生すると、多くの大手 Web サイトが金切り声を上げて停止することになった。

その主な部分は、Left-Pad を使用しているほとんどの人が、Left-Pad を使用していること、その機能、問題の解決方法をまったく知らなかったことです。 2に書いてある通り、所有していないと必ずしも理解できないかもしれません。

Left-Pad は、行の左側にいくつかのスペースを追加して、行が正しい長さであることを確認するだけの非常に単純な機能です。 ここでの問題は、有能なプログラマであれば誰でもその機能を簡単に複製できるということです。

アプリケーションがこのサードパーティの機能に依存する必要は全くありませんが、Netflix、Facebook、Reddit など、何千もの Web サイトがこのサードパーティの機能を含むソフトウェアを使用していました。 この場合、チェーンを切断したのは非常に単純な関数であり、独自の依存関係のチェーンを持つ非常に複雑な関数ではなかったのは、単なる幸運でした。

一番下の行は、自分でそれを構築できる場合、おそらくそうすべきです!

プロジェクトでサードパーティのコードブロックを使用するかどうかの最終的な決定は、決して軽視すべきではない一連の複雑な決定に帰着します。 考慮する必要がある要素は、セキュリティ、合法性、コスト、時間、安定性です。

決定プロセスをより簡単にするために、以下のテスト条件がおそらく役立つでしょう。

これらの要因のいずれかが当てはまる場合:

  • あなたが望む機能はシンプルです
  • あなた(またはあなたのチーム)は、機能を作成する能力を持っています
  • 関数を作成する時間は十分あります
  • アプリケーションには優れたセキュリティが必要です
  • サードパーティのライセンスに関連する潜在的な法的問題について懸念がある
  • アプリケーションが失敗しないことが重要です

次に、自分で作成する必要があります。

ELSEは、潜在的な問題を認識していて、それらの問題が発生した場合の対処方法が適切であれば、サードパーティの機能を使用する方が効率的です。

ボグダン・ランセア

ボグダンはインスパイアードマグの創設メンバーであり、この期間でほぼ6年の経験を積んでいます。 余暇には、クラシック音楽を学び、視覚芸術を探索するのが好きです。 彼はフィクシーにもかなり夢中です。 彼はすでに5を所有しています。

コメント 0応答

コメントを残す

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *

評価 *

このサイトでは、スパムを減らすためにAkismetを使用しています。 コメント処理方法.