一か月以上、投稿していないので最近の出来事を箇条書きにします。
1.Programming in Scala 2nd Edition が恵比須の本屋に平積みになっていたので購入。
初版もページをぱらぱとめくっただけで結局読んでいない。
2nd Editionはまだページさえ開いていない。いったいいつ読むんだ?
2.長い間投稿していない理由
- Javaでプログラムを書くのが忙しい。仕事しているということ。
- 興味が散漫。世の中には面白いものがいっぱいある。iPhone4sに機種変したり、アンドロイドタブレットを手に入れたり、
- 新機能を追加しているが、完成していないので記事にできない。
新機能
新機能は、次の機能を実装しています。
盛りだくさんすぎて消化しきれていません。
新機能1:セッション管理
クッキーを使ったセッション管理機能を追加した。
トラッキングクッキーとセッションクッキーの2つのクッキーを使い分けています。
セッション管理はセッションクッキーを使って実装しています。
トラッキングクッキーは実際のサイトでは普通に使われているので利用できるようにしました。
新機能2:認証機能
セッション管理の機能を使ってログイン認証する機能です。
Apacheサーバのように認証が必要なページがあるディレクトリをWEB.XMLか、
htaccess.txtファイルをそのディレクトに置くと、このページをアクセスすると
ログイン画面が割り込みます。
IP・パスワードや認証状態はMySQL(Oracle)で管理
新機能3:フォーム生成
Bean情報からWEBフォームを自動生成
WEBフォームからDBに自動的にデータ登録・更新・削除
この機能は実装する予定はなかったのですが、実際にWEBアプリを開発し始めると欲しくなったので開発しました。
INPUTタグのname属性とテーブルのカラム名の関連リストを作るとDB操作のコードを書く必要がありません。
関連リストがないときは、カラム名として処理することもできます。
新機能4:セキュリティ対策機能
セキュリティ対策は、WEBフレームに必須な機能です。
現在、有名なフレームでも以下の説明するセキュリティ対策の機能を持っていないものがほとんどです。
IPAから10種類のWEBアプリの脆弱性について解説されています。
WEBフレームで対策することが困難なものもありますが、これらの脆弱性への対策する機能を実装しています。
10種類の脆弱性については以下の通りです。
1.SQLインジェクション
この機能は、WEBフレームワークではなく、SEEDOフレームワークに実装されています。
「基本はプリペアードステートメント(java.sql.PreparedStatement)を使ってSQL文は書きましょう」なのですが、
もっと突っ込んだ対策として
WHERE(“ename=?”,name)と書かずに、Stringの連結で WHERE(“ename='”+name+”‘”) と記述すると警告するというものです。
2.クロスサイト・スクリプティング
3.CSRF (クロスサイト・リクエスト・フォージェリ)
これらについは、予め設定した画面遷移を踏まないと、フォーム処理ができない仕組みを標準で持たせています。
セッション管理機能とフォーム自動生成機能で実装しています。
4・パス名パラメータの未チェック/ディレクトリ・トラバーサル
相対パスでのアクセスができないようにプロテクトします。
5.OS コマンド・インジェクション
Scalaなので直接OSコマンドは実行できません。
RubyやPHPのようなスクリプト言語は注意しないといけませんね。
6.セッション管理の不備
Cookieを使ったセッション管理はSSLを使わない限り安全性の高いセッション管理を実装することは難しいです。
現在、実装しているセッション管理では、セッションを横取りされないためにページ遷移するごとに
乱数発生し、Cookieにこの乱数を格納してSubmitされたリクエストと乱数が整合しているかをチェックすることで
安全性を高めようというアプローチです。
7.HTTP ヘッダ・インジェクション
WEBフレーム独自のヘッダ情報で管理します。
8.HTTPS の不適切な利用
これはWEBフレーム側の問題ではないです。
9.サービス運用妨害 (DoS)
通信容量を超えるアクセスへの対応は困難ですが、
正規のアクセスではないと区別することができれば、DoS攻撃のアクセスをフィルタリングすることが可能です。
10.メール不正中継
これはWEBフレームワークで対策することは難しいです。
上記、セキュリティ対策機能を構築しているのですが、これをすべて満たしてから正規にリリースしようと考えております。
となると、いつまでたってもリリースできなくなってしまいますので、
対策したものとそうでないものを明記してリリースしてはどうかとも考えております。
しかし、このページへの反響が私には届いていないので、、、
賛同してくれて開発に協力してくださる方を募集します。
コメントを残す
コメントを投稿するにはログインしてください。