COLUMN誰でもわかる!お役立ちコラム

StrutsからSpring移行 お役立ちコラム

Strutsフレームワークの歴史と脆弱性

Strutsとは? 一世を風靡したJavaのフレームワーク

Struts(ストラッツ)は、2000年代初頭にJavaWebアプリケーションを開発する上で非常に人気を集めた開発フレームワークです。当時の企業では、社内の業務システムや顧客向けのWebアプリケーションを作るために、より効率的な開発手法が求められていました。Strutsは、そうしたニーズに応える形で登場し、多くのJava開発者に使われるようになったのです。

そもそもJavaとは?

そもそもJavaというプログラミング言語は、「一度書けばどこでも動く(Write Once, Run Anywhere)」という特性を持っており、WindowsでもLinuxでも、様々なプラットフォームで動作するという大きな強みがありました。さらに、速度やセキュリティ、安定性にも優れており、企業の業務システムに適した言語として世界中で広く使われています。ですが、JavaWebアプリケーションを開発するには、ServletJSPといった基本技術だけを用いて手作業で細かく扱う必要があり、かなりの経験と労力が必要でした。そこで登場したのがいわゆる開発フレームワークです。

フレームワークとは?

フレームワークとは、アプリケーション開発を効率化するためののようなものです。開発者はその枠組みの中で必要な部分だけを作ることで、ゼロから全部組み立てるよりも大幅に素早く・簡単に・品質よくシステムを作ることができます。

Strutsについて詳しく

Strutsは、そうしたフレームワークの中でも先駆け的存在であり、特にJavaでのWebアプリケーション開発に革命をもたらしました。構造化されたコードの書き方が可能になり、チーム開発や保守もしやすくなったことで、多くの企業が導入しました。Strutsは「MVCModel-View-Controller)」というアーキテクチャを採用しており、画面(View)・処理(Controller)・データ(Model)を分けて開発できる点が特徴です。この考え方は今でも一般的ですが、当時はとても先進的でした。このように、Javaの持つ安定性とフレームワークの効率性が合わさったStrutsは、業務システムの世界で急速に広まり、まさに一世を風靡した存在となったのです。

なぜStrutsは広まったのか? その魅力とメリット

Strutsの大きな魅力は、開発の「標準化」ができる点でした。従来のJava開発では、開発者ごとに設計や記述の仕方がバラバラで、品質にもばらつきがありました。しかしStrutsを使えば、ある程度決められたルールや構造の中で開発を進めることができ、経験の浅いエンジニアでも一定レベルの品質が担保できたのです。また、Strutsはオープンソースでありながらも多くのドキュメントやノウハウが流通しています。これは、人材確保やバクチェックの観点で、企業にとっても導入しやすい選択肢でした。「StrutsSpringiBatis」といった構成は当時のゴールデンコンビとされ、企業システムの定番とも言える存在でした。

脆弱性のあるStrutsからSpringへのスタイルズのフレームワーク移行サービスはこちら→

時代の流れとともに進む老朽化~Strutsの終焉~

しかし、どんなに優れた技術でも、時代が進むと次第に古くなっていきます。Strutsも例外ではありません。Struts 12008年に開発が終了し、2013年には公式のサポートも打ち切られました。その後継としてStruts 2が登場しましたが、Struts 1とは設計思想が大きく異なっていたため、簡単に移行できるものではありませんでした。その結果、多くの企業ではStruts 1のままシステムを維持し続ける状況となってしまったのです。サポートが終了しているソフトウェアを使い続けることは、いわば「止まった時計」を使っているようなもので、いつ不具合や問題が発生するか分かりません。

Strutsが抱えるセキュリティリスクとは?

Strutsが抱える最大の問題は、セキュリティの脆弱性です。実際に、Strutsを利用していた複数のWebサイトで、重大な情報漏洩事件が発生しました。たとえば2017年には、「Apache Struts 2」の脆弱性が悪用され、都税のクレジット支払いサイトや大手メディアの会員ページなどが不正アクセスの被害を受けました。攻撃者は、Strutsの脆弱性を利用してサーバに侵入し、個人情報やクレジットカード情報を盗み取るという深刻な被害をもたらしました。

Struts 1でも、2014年に「Apache Struts 1が使用されているターゲットに対して、細工を行ったリクエストを送信することにより Apache Struts 1が動作する Web アプリケーションサーバーに対して任意に操作ができるようになる」という重大な脆弱性が発見されました。このような脆弱性が発見されても、サポートが終了しているため修正パッチも提供されません。こうした問題は、セキュリティ上の重大なリスクを抱えたままシステムを運用していることを意味します。

今も残るStrutsシステムと「技術的負債」問題

それでもなお、Strutsを使い続けている企業は少なくありません。Googleで「filetype:do login」などで検索すると、Struts 1で構築されたWebページが今でも多数見つかります(注:これで見つかるサイトすべてが現在もStrutsを使い続けているとは限りません)。これは、Strutsが使われていた時代に構築された社内システムや業務アプリが、そのまま残っていることを意味します。このような状況は「技術的負債」と呼ばれています。これは、古くなった技術を使い続けることで、保守や開発にかかるコストやリスクが増大している状態を指します。さらに、Strutsのような古い技術に対応できるエンジニアが年々減っているため、今後は保守工数の増大や、ドキュメント不足などメンテナンス自体が困難になる可能性もあります。

脆弱性のあるStrutsからSpringへのスタイルズのフレームワーク移行サービスはこちら→

なぜ今、Strutsからの移行が必要なのか?

では、なぜ今Strutsから移行すべきなのでしょうか?その理由は大きく3つあります。

  • セキュリティ上の理由
    1つ目は「セキュリティの確保」です。Strutsは既にサポートが終了しており、脆弱性が発見されても修正されることはありません。これを放置することは、自社の重要な情報を攻撃者に差し出すようなものです。
  • 人材確保
    2つ目は「人材の確保」です。今のエンジニアは、Strutsを知らない人も多くなっています。若手の技術者にとっては、モダンなフレームワークで開発したいというのが本音でしょう。古い技術を使い続けると、人材の確保や育成が難しくなってしまいます。
  • ビジネスの競争力・柔軟性の確保
    今後、業務のデジタル化を進めたり、クラウド移行を行ったりする上で、Strutsのような古い技術では対応が難しくなっていきます。現代のIT環境に柔軟に対応するためにも、モダンなフレームワークへの移行が求められます。

移行先の有力候補「Spring」とは?

Strutsからの移行先として、もっとも有力なのが「Spring Framework(スプリング・フレームワーク)」です。Springは、現在も活発に開発・サポートされており、世界中の企業で使われているモダンなJavaフレームワークです。Strutsと同じMVCのアーキテクチャをベースにしているため、移行のハードルが比較的低く、既存の資産を活かしながら移行を進めやすいという特徴があります。特に、Struts 1Seasar 2からSpringへの移行に対応したツールやノウハウを持つ企業も多く、プロジェクトのリスクを抑えながら段階的な移行も可能です。

まとめ

Strutsは一時代を築いた素晴らしいフレームワークでしたが、今では明らかに時代遅れになってしまいました。そのまま使い続けることは、セキュリティ上のリスクや技術的負債を抱えることになりかねません。これからの企業ITを支えるためには、現代の開発スタイルやセキュリティ要件に対応できるモダンなフレームワークへの移行が不可欠です。

  • Struts/Struts2/Seasar2からSpringへの移行サービス
  • 資料ダウンロード