【PHP】composerを使ったライセンスチェック

著者:杉浦

【PHP】composerを使ったライセンスチェック

 composerはPHPのパッケージインストーラでその中にはいくつか機能があります。機能の一覧はcomposer listで確認できます。composer licensesはその中の機能の一つでcomposerでインストールされているパッケージ全ての名前、バージョン、ライセンス種類を表示してくれます。
 
 ライセンスは深く気にするべき時、しなくていい時があります。どこの誰にでもソースコード込みで公開するOSSの開発時は派生だろうがなんだろうが元のライセンスを継承して完全公開すれば大体OKですが、商用の場合そうもいきません。いくつか避けるべきライセンスがあります。
 避けておいた方が無難なライセンスはGPL系、特にAGPLです。AGPLはAFFERO GENERAL PUBLIC LICENSEの略です。
 GNUアフェロ一般公衆ライセンス – GNUプロジェクト – フリーソフトウェアファウンデーション
 AGPLは次の通りのことをプログラムに要求します。

GNUアフェロ一般公衆ライセンスは通常のGNU GPLバージョン3を改変したバージョンです。これには一つ要求が加わっています。サーバで改変したプログラムを動かし、そこでそのプログラムとほかのユーザに通信させる場合、サーバはユーザにそこで動いている改変バージョンに対応するソースコードのダウンロードも許可しなければいけない、というものです。

 どこまでが改変だとかの解釈は理解していませんが(継承した時点でアウト?)、AGPLのプログラムを含むプログラムを動かした場合、そこに正規でアクセスしたユーザはソースコードも手に入れられなければならない、という状況になりそうです。商用ということは扱うものがものですから悪意のあるユーザへの対策は必須です。ソースコードの公開はセキュリティホールの発見を容易にします。あるいは見つかるはずのなかった穴を見つけさせます(マジックナンバーで書かれた何かしらとか。設定ファイルを介するプログラムを組んでおけばそれだけで回避可能ですが)。
 composerのライセンスチェック機能を使うと、こういった問題を容易に回避できます。やることはシンプルで次のようにcomposer licensesの結果にgrepをかけるだけです。

composer licenses | grep -v -P ^\(?=.*[^,]\(MIT\|BSD-3-Clause\)[^,]\)


 安全安心な許容できるライセンスによるホワイトリストがよいと思います。

  • この記事いいね! (1)

著者について

杉浦 administrator