Posted on

DB暗号化を調べてみた

DBに保存する時に個人情報をそのまま保存するのは、万が一DBの情報が流出した時にまずいので、色々と調べてみました。

まず、パスワードはphpのmd5でハッシュ化して保存すれば、復号できないのでOK、パスワードを忘れた場合は、新しいパスワードをランダム生成。
次に、暗号・復号するデータ。
氏名やメールアドレスなど、
php側で暗号・復号する方法と、DB側で暗号・復号する方法があります。(ハードディスク自体暗号の方法もありますが)
で、問題は、LIKE検索とINDEXでした。
基本、暗号化して保存すると上記2点が出来なくなることが問題です。
その点も踏まえてどんな方法があるか調査してみました。
とりあえず今回は
php mysqlの環境で出来ればということで・・・

続きを読む DB暗号化を調べてみた

Posted on

スマートフォンに関係する開発をはじめて試してみました。

【スマートフォンの標準ブラウザーの動作検証】
どのような開発の方法があるか調査しました。
以下のような方法で実際に表示させてみました。
(1)jQuery Mobileとsencha Touchです。
jQuery Mobileは、jQueryのプラグインです。オープンソースで提供されています。
sencha Touchは、JavaScriptフレームワークです。
(2)検証
jQuery Mobileは、サンプルのHTMLを作成して公開し、android端末とiphone4端末で動作を確認しました。
sencha Touchは、サンプルのJavaScriptが用意されていたためそのまま公開して、android端末とiphone4端末で動作を確認しました。
共に、標準のブラウザーでは、問題なく動作しました。しかし、Androidのfirefoxでは、うまく動きませんでした。
主に確認したかったのは、チェックボックス、ラジオボタン、セレクトボックスがどのように動作するかでした。
スマートフォンらしい?動作をしていました。
(3)感想
もうすこし、詳しく検証する必要はあると思うのですが、ブラウザーの表示内容がスマートフォンらしく表示できるので、利用を検討したいと考えています。
ただ、標準のブラウザーしか、この2つは、動作しないので、Androidなどで、firefoxなどを利用されている場合は、
パソコン用のページを見るなりして頂かないといけない点が残念なところでした。
【スマートフォンエミュレーターのインストール】
残念ながらiphoneのエミュレーターは、見つかっていません。
androidは、SDKの中にエミュレーターが含まれているので、それを動作して上記の検証も行いました。
●androidエミュレーターのインストールと起動方法
1.まず、http://developer.android.com/sdk/index.html
より、android-sdk_r11-windows.zip を入手します。
2.android-sdk_r11-windows.zipを解凍します。
3.解凍した、android-sdk_r11-windows\android-sdk-windowsへ移動します。
4.SDK Manager.exeを実行します。
5.立ち上がったAndroid SDK and AVD Managerの左の一覧からAvailable packagesを選択し、
右上部のAndroid Repositoryにチェックを入れInstall Selectedボタンを押下します。
数十分インストールが動作します。
6.Android SDK and AVD Managerの左の一覧からInstalled packagesを選択して、Update All…ボタンを押下し、
ダイアログが表示されたPackagesをInstallします。
7.Android SDK and AVD Managerの左の一覧からVirtual devicesを選択して、New…ボタンを押下し、
Create new Android Virtual Device(AVD)が表示します。そのNameとTargetを決定して、Create AVDを押下します。
8. Android Virtual Devices Managerダイアログで確認し、OKを押下します。
9.Android SDK and AVD Managerの左の一覧からAVD Nameが指定したものを選択して、Start…を押下します。
10.Launch Optionsダイアログが表示されますので、Launchを押下します。するとエミュレーターが表示します。
(1)検証
このエミュレータについているブラウザーでも、上記jQuery Mobileとsencha Touchは問題なく動作しました。(ローカル検証用に利用可能です。)
(2)感想
エミュレータは縦に表示されるので、横にした時の動作などは、確認できませんでした。(まだ、調査が足りないかもしれませんが。。。)
デバックするには、十分使えるエミュレータだと思います。今度は、Androidアプリを試してみたいです。
Posted on

Subversion(サブバージョン)でEUC-JPのソースを管理する

Subversionを使用してバージョン管理しているのですが、EUC-JPのソースを管理しようとした時、ソースの差分を見たら文字化けしてしまいます。
これはSubversionの標準ビューアのTortoiseMergeがEUC-JPに対応していないという事らしいです。
ではどうすればいいかなとググッてみたらWinMergeというビューアを入れてSubversionに登録してあげると良いらしい・・・
WinMergerはhttp://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.htmlから自分の環境に合ったバージョンを落としてきます。
落としたZIPファイルを解答すると中にexeファイルが居るのでこれを使ってあげるだけです。
Subversionに紐付けるのは「TortoiseSVN→設定→外部プログラム→差分ビューア」でプログラムの指定が出来るところで外部を指定してパスに先ほど落としてきたWinMergeのexeファイルまでのパスを指定するだけでEUC-JPのファイルでもきちんとバージョン管理が出来るようになりました。

個人的にはTortoiseMergeよりWinMergeの方が見やすくてGOODですね!!

Posted on

ブラウザ・IEの画像キャッシュをなんとかする

画像をアップするシステムを作ってる時にかなり邪魔なブラウザの画像のキャッシュ。

画像をアップしなおしたのにブラウザで確認すると前の画像が!!
そんな時の解決方法をまとめてみました。
テストしたのは
IE6,8
Firefox4
Chrome11
テストファイルはphpです。

続きを読む ブラウザ・IEの画像キャッシュをなんとかする

Posted on

phpコードの暗号化をする

今回phpコードを暗号化する方法を検討することになり、いろいろ試してみたので、その経過を記していきます。

まず最初にPOBSというプログラムが比較的簡単に導入できそうなので試してみました。
http://pobs.mywalhalla.net/からPOBSのダウンロードしてきます。
最新版のpobs099.zipをダウンロードして展開した出来たフォルダをphpが動作する区画にアップロードします。
後はブラウザから中に入っているpobs.phpを叩くだけで使えるということだったのですが、動かない!!
画面が崩れてコードの表示がむき出しになっている状態でした。
調べてみるとPHPを開始するところの記述が「<?」だけになっていました。
サーバーの設定にもよるのですが「<?php」で始めないと動かないようになります。
今回試した環境では動かなく原因を特定するのにハマリました・・・

無事に画面が表示されたので実際に実行してみます。
「Source Directory」に暗号化したいphpのあるパスを記述して、「Target Directory」に暗号化し終わったファイルを置くパスを指定します。
後は自由に設定が出来てクラス名・関数名・変数という具合に指定できます。
準備が出来たら「Start processing」を押すとどのファイルを変更したかと、変更前の記述と変更後の記述が表示されます。
それで「Target Directory」で指定したフォルダを見てみると、変換されたファイルが出来ていました。

感想:POBSはphpソースの暗号化というより可読性を落とすという感じで、今回捜し求めているphpの暗号化には当てはまらなそうです。ただ導入も簡単なので将来役に立つかも・・・

次に試してみたのがPHP_SCREWという暗号化ツールです。
導入と使い方は次のページを参考にしていきました。
http://www.pm9.com/newpm9/itbiz/php/phpscrew/ (本家)
http://tm.root-n.com/programming:php:etc:php_screw
基本的にLinuxにインストールしてコマンドでソースの暗号化をするというツールです。
コマンドで実行したら指定したファイルが暗号化されて、同じ場所に「元ファイル名+.screw」のファイルが出来ます。
後は「元ファイル名+.screw」のファイルを消せば暗号化の完成!!

感想:ソースの暗号化という分に関してはある程度望んでいる感じだった。しかし暗号化したPHPはインストールしたサーバーでしか動かないのでレンタルサーバーで動かすときやパッケージで提供するときには使えなさそう。

Posted on

cakephpのdatabase.phpのprefixを使用しました。

新しいシステムをレンタルサーバーにアップする際に、データベースが1つしか存在せず、新たにデータベースを作ることもできず、すでに他のシステムのテーブルが存在し、データベースが利用されている状態にありました。既存システムと新システムのテーブルを簡単に区別する必要があると思い調べました。単純にテーブル名を変更すると、MVCモデルのファイル名やフォルダ名も変更する必要が出てきます。調べていくうちに、cakephpのdatabase.phpでプレフィックスを指定できることが判明し、’prefix’ => ‘okushin_’,ように定義しました。当然MySQL側でも
mysql> ALTER TABLE 古いテーブル名 RENAME 新しいテーブル名;
のコマンドにてテーブル名をusersからokushin_usersのように新システムに関係するテーブルすべてにokushin_をつけてテーブル名を変更しました。するとMVCモデルでのMのuser.php、Vのフォルダ名users、Cのusers_controller.phpのファイル名フォルダー名はそのままでシステムが正常に動作しました。とても簡単で利用しやすい機能だと思い紹介してみました。
Posted on

A5SQL Mk-2のツールを検証しました。

A5SQL Mk-2のツールを検証しました。
検証は、fedora14上のMySQLにODBC経由で接続し行いました。
ODBCの設定に、MySQL側にも設定が必要で、時間を要しました。
MySQLの設定は、以下のような設定です。
mysql> grant all privileges on DB名.* to アカウント名@’IPアドレス/サブネットマスク’ identified by ‘パスワード’;
コントロール パネル\すべてのコントロール パネル項目\管理ツールにて、
データソース(ODBC)をクリックして、ODBCデータソースアドミニストレーターにて、
システム DSNを設定します。
これで準備は完了です。
A5SQL Mk-2のツール[A5M2.exe]を立ち上げて、データベースの追加と削除を行います。
ODBCシステムデータソースを列挙するをチェックして、追加ボタンを押下します。
データリンクプロパティで先ほど設定したODBCのデータソースを選択して、接続テストをします。
これで、A5SQL Mk-2のツールが使用できる状態になります。
確認した内容としましては、下記4点です。
1.SQLの実行
2.データの参照
3.ER図のリバース生成
4.テーブル定義書作成
【よかった点】
1.データの参照では、レコードの追加や削除ができ、こちらはテストデータを作成するなどで利用できそう。
2.テーブル定義書作成は、体裁を整える機能としては有効に利用できるのではないかと思います。
【残念だった点】
1.テーブル作成のSQLを実行しましたが、その場ではテーブルが追加されず、立ち上げ直して初めて参照できるようになる点
2.ER図のリバース生成は、MySQLなので、外部キーの設定情報などの確認が出来なかった点
総合評価:弊社では、現在EXCELにてテーブル定義を行い、MySQLに登録して使用しています。EXCEL作成時の項目に対するデータの定義も行っており、その記述がMySQLではできない点もあるために、このツールを積極的に利用するという結果には至りませんでした。ツールの持っている機能はとてもすばらしいと思います。用意されている機能は、他のデータベースではもっと有効に利用できるのだろうと思いますが、MySQLでは、少し物足りないように思いました。また、MySQLだけなのかもしれませんが、設計するためのツールという位置づけでは利用できないと思いました。
利用されている方で、私どもが間違った認識をしている点などが御座いましたら、ご指摘頂けましたら幸いです。
Posted on

selectボックスを変更すると他の複数項目を自動的に変更するAjaxのサンプルソース

CakePHP開発にて、selectボックスの変更イベントで他の項目を自動的に変更するAjaxのサンプルのソースです。modelsとcontrollersの一部のコードにつきましては、割愛させて頂きます。本機能を追加するにあたっては、edit.php,samples_controller.php,ajaxskind.php,ajaxsitem.php,ajaxsmemo.phpのコードを参照して頂き、参考になれば幸いです。

続きを読む selectボックスを変更すると他の複数項目を自動的に変更するAjaxのサンプルソース

Posted on

wdCalendarをCakePHPに組み込んでみる

以前紹介した記事「wdCalendarを日本語で使ってみる」で日本語化したwdCalendarをCakePHPに組み込んでみたので紹介します。

それから少し改造ということで、登録できるフィールドを追加してみるのと、ログインした人のidを基に誰が登録した予定なのかを持たせるようにしました。

実際の見た目はコチラ

続きを読む wdCalendarをCakePHPに組み込んでみる