Apache Struts










































Apache Struts

Apache Strutsロゴ
開発元
Apacheソフトウェア財団
初版
2001年(18年前) (2001
最新版
2.5.18 / 2018年10月15日(2か月前) (2018-10-15 [1]
プログラミング言語
Java
プラットフォーム
クロスプラットフォーム
種別
Webアプリケーションフレームワーク
ライセンス
Apache License 2.0
公式サイト
struts.apache.org
テンプレートを表示

Apache Struts(アパッチ・ストラッツ)は、Apacheソフトウェア財団のApache Strutsプロジェクトにて開発されているオープンソースのJava Webアプリケーションフレームワークである。




目次






  • 1 概要


  • 2 特徴 (Struts1)


  • 3 特徴 (Struts2)


    • 3.1 セキュリティーホール




  • 4 派生版


  • 5 競合するMVCフレームワーク


  • 6 脚注


  • 7 関連項目


  • 8 外部リンク





概要


元々はクレイグ・マクラナハン(英語版)の作成したソフトウェアであり、2000年5月にApacheソフトウェア財団に寄付された。当初はJakarta Projectに位置しており、Jakarta Struts(ジャカルタ・ストラッツ)と呼ばれていた。2005年にApacheのトップレベルプロジェクトに昇格した。


Apache Tomcatなどのサーブレットコンテナ上で動かすことができる。サーブレットとJSPによる開発環境下に登場したStruts1は広く受け入れられ、2005年頃にはJava Webフレームワークのデファクトスタンダードと呼ばれるほどの普及を見せていた[2][3]。しかしソフトウェア技術の進歩とともに欠点も多く指摘されるようになり、2007年にリリースされたStruts2ではそれまでの仕組みを捨て、WebWork2として開発されていた別のフレームワークをベースとしたものへと置き換えられている[4]


フレームワークにはModel View Controllerアーキテクチャが適用されている。類似したフレークワークとしてJSF (Java Server Faces) や Spring MVCフレームワークがある。



特徴 (Struts1)


整備されたJSPカスタムタグによってJavaコードはJSPファイルと分離され、従来のJSPのようにHTMLタグの中に<%%>で囲まれたスクリプトレットであるJavaソースコードを混在させる必要なく読みやすく洗練されたコーディングができるようになっていた。


主なStrutsのタグライブラリ



  • HTML
    HTMLのフォーム部分で利用する


  • Logic
    条件分岐や繰り返しなどの制御ロジックを提供


  • Beans
    Modelで定義されたJavaBeansにアクセスする機能を提供


  • Nested
    属性名の記述を省略可能にする


  • Tiles
    複数のJSPで利用する記述を共通化するテンプレート機能を提供



またStrutsではActionServletが用意されており、画面の遷移をコントロールする設定ファイル(struts-config.xml)を変更するだけで容易に遷移先を変えることができる機能を提供していた。
アクションサーブレットでは画面で入力された内容を検査する Validator の機能が用意されており、設定ファイル(validator-rules.xml)を変更するだけで入力チェックの仕様を変更することが可能であった。入力チェックするデータは一旦アクションフォームと呼ばれるBeansに格納された。


最終リリースは2008年10月4日の1.3.10で、2013年4月5日にサポート終了を迎えた[5]。2014年現在でも多くのサイトがStruts1を使用しているが[6]、同年4月には深刻な脆弱性も発見されている[7]



特徴 (Struts2)



Struts2では、Struts1と比べて下記のような改善がなされている[4]




  • アノテーションや設定より規約による設定ファイルの削減


  • 依存性の注入 (DI)

  • POJO


また、OGNL (Object-Graph Navigation Language) と呼ばれる式言語が搭載されており、これにより動的なパラメータを扱うことを可能としている[8]。一方、この機能ではたびたび深刻なセキュリティホールが発見されており、利便性の反面セキュリティ面の脆弱さも指摘されている[9]



セキュリティーホール


Struts2の多数のセキュリティーホールが攻撃対象になり、多数の被害を出している。




  • GMOペイメントゲートウェイ(東京都 ・住宅金融支援機構) - クレジットカード番号36万件流出[10][11]


  • JETRO - メールアドレス2万件流出[12][11]


  • 日本郵便 - メールアドレス2万件流出[13][11]


  • ぴあ - クレジットカード番号3万件流出[14]


  • 国土交通省土地総合情報システム - 不動産取引価格アンケート回答4,335件、所有権移転登記情報194,834件が流出した可能性あり[15]



派生版



Super Agile Struts (SAStruts)


Seasarプロジェクトが公開している、Struts1と独自のDIコンテナであるSeasar2をベースに、より素早い開発を行うことを目指したフレームワーク。

TERASOLUNA Server Framwork for Java


NTTデータが公開している、Struts1とSpring, iBATISをベースに、独自の拡張を行ったサーバサイドフレームワーク。



競合するMVCフレームワーク


Strutsは、よくドキュメント化され、成熟し、普及したフロントエンドのフレームワークであるが、「軽量」フレームワークとして分類されるSpring MVC、Stripes、Apache Wicket、Play Framework、Apache Tapestryといったものがある。


StrutsからスピンオフしたWebWorkフレームワークは、Strutsオリジナルと同じアーキテクチャを保持したうえでの強化と洗練を目的としていたが、StrutsとWebWorkは再びマージされ、Struts2としてリリースされた。


その他のJavaベースのMVCフレームワークとして、WebObjectsやGrailsもある。



脚注





  1. ^ “Welcome to the Apache Struts project”. 2018年10月15日閲覧。


  2. ^ “普及進む無償のフレームワーク「Struts」”. ITPro (2002年12月16日). 2011年11月26日閲覧。


  3. ^ “手を握るStrutsとSpring、今後の行方は”. マイナビニュース (2005年10月17日). 2011年11月26日閲覧。

  4. ^ ab“Struts2入門”. CodeZine (2008年3月21日). 2011年11月26日閲覧。


  5. ^ “Apache Struts 1 End-Of-Life (EOL) Press Release” (英語). Apacheソフトウェア財団 (2013年4月5日). 2014年2月20日閲覧。


  6. ^ “Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~”. 株式会社ラック (2014年4月24日). 2014年6月15日閲覧。


  7. ^ “Apache Struts2 の脆弱性対策について”. 情報処理推進機構. 2014年5月2日閲覧。


  8. ^ “Struts 2.0 と OGNL”. IBM (2011年3月8日). 2014年4月24日閲覧。


  9. ^ “例えば、Strutsを避ける”. 株式会社ビットフォレスト (2014年4月23日). 2014年4月24日閲覧。


  10. ^ 不正アクセスに関するご報告と情報流出のお詫び (PDF)” (2017年3月10日). 2017年6月7日閲覧。

  11. ^ abc井上英明「日経 xTECH 猛威振るうStruts2脆弱性への攻撃、どうすれば防げたか」、日経BP社、2017年3月22日


  12. ^ “日本貿易振興機構(JETRO)不正アクセスを受け情報漏洩の恐れ”. 2017年6月7日閲覧。


  13. ^ “Apache Struts 2の脆弱性で日本郵便のサイトにも不正アクセス、国際郵便用サービスの登録メールアドレス2万9116件、送り状1104件が流出”. 2017年6月7日閲覧。


  14. ^ “ぴあ、チケットサイトから個人情報15万件流出か カード情報も”. 2017年6月7日閲覧。


  15. ^ “「土地総合情報システム」における不正アクセスおよび情報流出の可能性について”. 2017年6月7日閲覧。




関連項目




  • JavaServer Faces (JSF)

  • WebWork

  • Spring Framework



外部リンク








  • Apache Struts (英語)

  • Super Agile Struts (SAStruts)

  • TERASOLUNA Server Framework for Java










Popular posts from this blog

CARDNET

Boot-repair Failure: Unable to locate package grub-common:i386

濃尾地震