【PHP】静的解析で脆弱性に対応!簡単解説で速攻理解つぶらや2018/12/242018/12/24PHPでプログラムを作った後、すぐにうまく動いてくれる場合もあれば、エラー等の発生で動かない場合も沢山あります。その場合、目視でプログラムをチェックするという方法もありますが、大量のコードだった場合は困難です。そんな時はPHPファイルを解析にかけましょう。【応用】ツールで解析わかりやすく解説していきますので最後まで読んで頂けると幸いです。まとめ静的解析についてまず、静的解析について理解しましょう。静的解析とは静的解析では、プログラムを実行・動作させる事はありません。そのため、【静的】と呼びます。【解析】は、書かれたプログラムを分析してエラー箇所をみつけることを指します。静的解析とは、プログラムを動かす事なくエラー箇所を見つけるテストのようなものです。因みに静的解析の反対の動的解析は、プログラムを実行してエラー箇所を発見します。解析を行う目的なぜ解析を行う必要があるのでしょうか。プログラムを実行して、動かなかったらその部分を修正すればいい!とお考えでしょうか。自分のローカル環境のみで動かすテストプログラムでしたらそれでもよいのかもしれません。大量のコードが書かれたプログラムだった場合、どこを修正するのか探すのも大変です。無限ループを発生させるようなコードだった場合はサーバー環境に負荷を与えてしまうかもしれません。構文に問題のあるプログラムは、脆弱性やセキュリティにも関与してくる場合もあります。プログラムを書いたら動かす前に解析。この癖は付けておいた方がよいと思います。コマンドで解析を行う方法では、実際に静的解析を行ってみましょう。簡単なlintコマンドを使った確認方法です。サンプルコードerror_test.phpを以下のように作成してみて下さい。"samurai"そして、PHPが実行できるローカル環境等に配置しましょう。因みにこのコードは最後に【;】がないのでエラーになります。以下のコマンドを発行しましょう。error_test.php結果は以下の図のようになります。エラー箇所の行も表示されるので便利です。それてはerror_test.phpのエラー箇所を修正して再度コマンドを実行します。"samurai";結果は以下の表示となります。これがエラーがない場合の結果です。静的解析について何となくご理解頂けたでしょうか。前章ではコマンドを使ってチェックする方法を解説しましたが、実は静的解析の方法は他にもあります。それが、ツールを使った方法です。今回紹介するツールはPHPStanです。変数が存在しているか連想配列のキーチェックプロパティの型など、構文だけではなく細かい所までチェックを行ってくれます。実際に使ってみましょう。1.インストール今回はローカルに作成したvagrant環境(CentOS)でインストールしました。コマンドは以下の二つを順に発行しました。phpstan/phpstan以下の画像のようにインストールが完了しました。2.エラーをチェックインストールが完了したので、PHPStanを使ってエラーをチェックしてみます。以下のようなerror_test2.phpを作成してみます。$samurai;存在していない変数の表示なのでエラーが出るはずです。エラーチェックのためのコマンドは以下です。【チェックしたいPHPファイルのパスとファイル名】チェックレベルとは、チェックの厳しさの事です。0~7まで設定でき、7が一番厳しいチェックです。以下のコマンドを実行します。error_test2.php結果は以下の図のようになりました。$samuraiとありますので、やはり存在していない変数の表示部分がエラーとなりました。error_test2.phpを修正してエラーがでないようにしましょう。$samurai;再度以下のコマンドを実行します。error_test2.php結果は以下のようになりました。これが、エラーがない場合の表示結果です。lintコマンドを使った解析ではチェックできない細かい部分までチェックできるのでお勧めです。まとめ今回はPHPの静的解析について解説しました。少量のコードだけならば目視の確認でも大丈夫ですが、コードの量が多くなればそれも難しくなります。目視ではチェックレベルもまばらになると思います。業務でコードを書く場合はツールを使うのがおすすめです。TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。無料体験レッスンを予約する書いた人つぶらや独学PG&SE、東京在住30代女性。誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。