IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Webアプリケーションのセキュリティホールが注目を浴びたことから、セキュリティを意識した開発の必要性が高まってきている。今後の流れとして、セキュリティ上満たすべき項目が要件定義の段階から組み込まれるケースが増えていくことが予想されるが、実際の開発現場においてはセキュリティホールをふさぐための実装方法が分からないという声も多いのではないだろうか。 そういった開発者の負担を少しでも軽くすることができるように、本連載ではJavaにおけるWebアプリケーション開発時に最もよく利用されているStrutsフレームワークの実装に踏み込んで、セキュリティ上注意すべきポイントを解説していきたい。なお、本連載ではStruts 1.2.8を対象として解説を行っていくが、すでにStrutsを利用したWebアプリケーション開発を行っている開発者をターゲットとしているため、Strutsの使用方法、各機能の詳細な説明な
Tomcat などを使う理由として、最大のものは当然「セッションがあるから」である。が、ホントは「セッション」なぞHTTPにはないのである。HTTPはいわゆる「ステートレス」なプロトコルであり、「一度接続してレスポンスを返したらそれで終わり」な動作をするものである。前のアクセスと後のアクセスとは、本質的には何の関係もない...これがHTTPなのである。 しかしこれでは「Webアプリ」は困る。アクセスの正当性をチェックするために「パスワード認証」をしたアクセスと、「正当なユーザが正当な操作をする」アクセスとが、何らかのかたちで結びついてくれないと困るわけだ。だから「強引に前と後のアクセスを結びつける」機能をアプリケーションサーバは提供しており、これが「セッション」なのである。 じゃあ、強引に結び付けるための「糊」はなんだろう。この「糊」はやはりHTTPで利用可能で、一連のアクセスで同じ内容が
ある日、大手SNS(Social Networking Site)のmixiの日記にこのような書き込みがあった。それも1人だけでなく、同日に数多くのユーザーの日記に同じ文面が掲載されていた。 これは、単にこのような文章がはやり、ユーザー自身が意図して掲載したのではなく、ある仕掛けによってユーザー自身が気付かないうちに引き起こされた現象なのである。その仕掛けとは、CSRF(Cross-Site Request Forgeries)と呼ばれる攻撃手法の一種だ。 編集部注: 現在、「はまちちゃん」トラップは、mixi運営者により対策されています。上記のサンプルは、mixi風に再構成したものです。 本稿の内容を検証する場合は、必ず影響を及ぼさない限られた環境下で行って下さい。また、本稿を利用した行為による問題に関しましては、筆者およびアイティメディア株式会社は一切責任を負いかねます。ご了承ください
フォームの送信ボタンを1度押した後に、ブラウザの戻るボタンでフォームページに戻ってまた送信を押す、2重送信(と言うんだろうか…)はウェブアプリケーションではよくある問題だ。 Strutsではsynchronizing tokenを使って二重送信を防止する。 簡単な例で説明しよう。 まずアクションマッピングは次のようになる。 <action path="/contact" type="app.actions.SetupContactAction" scope="request"> <forward name="success" path="/contactForm.jsp" /> </action> <action path="/contact/submit" type="app.actions.ContactSubmitAction" name="contactForm" validate
J2SE1.4では、新しいシリアライズメカニズムとして2つのクラス、XMLEncoderおよびXMLDecoderが導入されました。これらのクラスはJavaBeansコンポーネントの長期保存を目的として開発されましたが、他のさまざまな用途で用いることができます。 J2SE 1.4 のリリースから1 年が経とうとしています。JAXP(Java API for XML Processing)や、JCE(Java Cryptography Extension)など、有用な機能がJ2SE の一部として組み込まれたため、とりわけネットワーク対応アプリケーションをクライアントに容易に配布するのに役立ってきたことでしょう。 J2SE 1.4 の新機能一覧*1を見ますと、「JavaBeans コンポーネントの長期持続性」という項目があります。およそXML と関係ありそうには見えないこの機能は、XML を使
import java.io.* ; import com.sun.xml.tree.* ; import org.w3c.dom.* ; public class XMLsample1 { public static void main(String args []) throws IOException, DOMException { if (args.length != 1) { System.err.println("Usage: cmd filename") ; System.exit(1) ; } // XmlDocumentオブジェクトを構築 XmlDocument doc = new XmlDocument() ; // ドキュメントのルートに"Component"を設定 ElementNode component = (ElementNode) doc.createEle
なんだか他人に思えないTomcatです。えっと、Javaサーバです。インストールして使ってみましょう。難しくないですが、Apacheとの連携はちょっと手間かも。 (OS X 10.2.3で動作確認しました。Javaのバージョンは1.3.1。Tomcatは4.1.18。Apacheは1.3.27) (自己責任で行ってください) Tomcatって何? Tomcatのインストール ダウンロードして展開 オーナーを変える JAVA_HOMEの登録 Tomcatの起動 トップページ表示 ポート番号を変える Apacheとの連携 APRをダウンロードして展開 モジュールをダウンロードしてmakeまで mod_webapp.soをコピー httpd.confの設定 server.xmlの設定 再起動 アプリケーションのページ表示 カスタマイズ 自分用ディレクトリを作る server.xmlの設定追加
PerlのCatalystとJavaのStrutsのMVC実装の比較をしてみます。 Struts Catalyst Model: Struts 図ではModelとしてActionFormとなっていますが、ActionFormはむしろViewに近い存在です。Strutsにおける実際の開発ではむしろJavaBeansをModelとして扱い、ModelのSerializeにはHibernateのようなO-Rマッピングツールなどを使います。SerializeにはDAOパターンを使うことが多いです。 Catalyst Catalystでは純粋なModelもフレームワークに組み込まれています。Class::DBIなどのActionRecord的アプローチを取るためModelそのものにSerializeの機能を含めることが多いためDAOなどを使う場面は少ないです。 Contoller: Struts
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く