カスタムAppのセキュリティー はじめに編

近年ではiPad、iPhone向けのFileMaker Goのおかげで、外出先からでもFileMakerサーバにアクセスするニーズが急激に増えています。自社サーバやAWSやAzureなどを使ってダイレクトにインターネット上に公開したり、それらを一括して請け負うホスティングサービス業者に任せて実現するケースも増えています。確かに最新のFileMakerはアカウント/アクセス権設定、SSL、AES256など高いセキュリティーを標準で持っていますが、適切な設定をしないまま外部へ公開していたり、それらを使っていたとしても、自分で作ったカスタムAppのセキュリティー知識が足りず、データ漏えいや攻撃の踏み台になってしまう恐れがあります。

FileMakerはソフトウェア開発者じゃなくてもユーザメイドで素早くカスタムAppを作れるソフトウェアです。やりたいことができない未経験者でも「できるはずのことが、出来る」ようにあっという間になれます。しかし、知識が乏しいために「できないはずと思っていたことが、実は出来てしまう」といういわゆる 脆弱性 を含んだカスタムAppも簡単にできてしまいます。そういうファイルをインターネット上の誰でもアクセスできる環境で公開されているケースを、残念ながら見かけるようになってきました。これらの脆弱性に対しての責任はFileMakerでも、インターネット業者でも、ホスティング業者でもありません。カスタムAppを作成して計算式やスクリプトを作成するあなた自身です。

悪意のある攻撃者だけでなく、悪意はないのに「見えてはいけないデータが見える、出来無いはずのことができる」というようでは安心して公開はできません。これから何回かに分けてチェックポイントをお伝えしていきたいと思っています。

今回まずはすぐに確認したいことは下記のポイントです。これらは最低限のセキュリティー設定です。

  • アカウント/パスワードをいれなくてもファイルを開くことができる設定をやめる
  • ファイルが開くことが出来る最低バージョンを適切に設定する
  • 外部ファイルアクセスの制限をOnにする
  • 完全アクセス権のAdminパス無しをやめて、十分な長さのパスワードを付与する
  • アクセス権セットの設定を綿密に設定する
  • AdminConsoleへのIPアドレスアクセス制限をする
  • SSL通信にする

つい最近ファイルメーカーから公開されたセキュリティーガイドがあります。
https://community.filemaker.com/docs/DOC-6763
FileMaker Serverをインターネット上に直接公開する場合は、
上記のポイントを参考に、セキュリティーガイドの36ページをすべてチェックしてカスタムAppに反映されることを強くオススメいたします。

またできれば、インターネット上での直接公開よりも「VPN接続を通しての公開」を検討してください。

 
ブログ一覧へ

署名機能 保存機能付き サンプル JavaScript

マウスやタッチによるサイン機能を実現するJavaScriptサンプルです。FileMaker Pro 、 FileMaker Go 、 で使用可能、WebDirect には対応していません。非常に簡単に組み込み可能です。

署名画像データをWebビューア上からJavaScriptでFileMakerに値を渡すのに「fmp://プロトコル」を使用していますので、FileMaker Pro 13v2以上、FileMaker Go 12以上、で保存可能です。
ただし、サンプルファイルはWindows環境ではSaveボタンが動作しない場合があります。

組み込み方法はコチラも参考にしてください。

サンプルファイルは以下からダウンロードしてください。

sample.fmp12

 

/*——————————————————
Copyright (c) 2015 Kotobuki Shoukai

寿商会のサービス


Released under the MIT license
——————————————————*/

 
ブログ一覧へ

署名機能 サンプル JavaScript

マウスやタッチによるサイン機能を実現するJavaScriptサンプルです。FileMaker Pro 、 FileMaker Go 、 WebDirect で使用可能です。非常に簡単に組み込み可能です。組み込み方法はコチラを参照してください。

サンプルを実行してみる

*IE上では上記サンプルは動きませんが、アドレス欄コピペしてWebビューアへ貼り付けすれば動作します。

/*——————————————————
Copyright (c) 2015 Kotobuki Shoukai

寿商会のサービス


Released under the MIT license
——————————————————*/

 
ブログ一覧へ

Windows10 の新しいブラウザ Edge と FileMaker について ( 修正版 )

Windows10が一般公開されました。弊社で確認したところバージョン14のみならず、11,12,13もインストール可能で、少し確認したところ不都合な点は見つかりませんでしたが、今後も注意深く確認する必要があるのかもしれません( 2015/8/4現在 )。

( 追加 2015/8/5 ) http://filemaker-jp.custhelp.com/app/answers/detail/a_id/15178/

Windows10のブラウザに関してはいろいろと注目されていまして、弊社も製品対応しなければならず正式リリースを待っていたのですが、下記の情報のようです。

  • Windows10 の標準ブラウザは、全く新たに開発された Edge というもの。
  • Edge は今までの IE と互換性がない。
  • Windows10 には IE11 もアプリケーションとして標準でインストールされている。
  • Windows10 の IE11 はWindows8.1搭載の IE11 と全く同じ。

さて、本題ですが、FileMaker の Webビューア という機能は、レイアウト内にブラウザの機能を搭載するものなのです。そのレンダリングエンジンは今まで OSによって固定されていました。WindowsにSafariをインストールしても、すべての端末にChromeをインストールしてもWebビューアが使用するレンダリングは変更できません。

  • Mac            Safari
  • iOS             Safari
  • Windows8.1まで IE

今までの流れで考えると Windows10は Edge になってしまうのか思っていたのですが、実際は IE11 でした ( FileMaker Pro 14.0.1 ) というのが答えです。ですので、今まで動作していたのもは何も手を入れずに、そのまま動くから安心ということです。

ただし、JavaScript で userAgent を取得した場合の結果が違ってきますので注意が必要です。とくに、IEのバージョン確認でよく使用する Trident/ の数字が違います。IE11でF12デバック時はOKなのにWebビューアでは動作しないときのヒントとして記憶しておくといいと思います。

  • IE11 を直接起動して取得した場合は ( *****は環境によって異なる模様 )
    Mozilla/5.0 (Windows NT *****; Trident/7.0; ***** rv:11.0) like Gecko
  • FileMaker Pro のWebビューア内で取得した場合は ( こちらは2台検証の結果同じでした )
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.2; Win64; x64; Trident/8.0)

当初本投稿は上記Tridentの数値違いイコール新しいブラウザという間違った解釈を出しておりました。間違いを 社本 修司 様 にすぐご指摘いただき内容を差し替えさせていただきました。感謝申し上げます。ありがとうございました。

 
ブログ一覧へ

FileMaker Go 14 の新機能の注意事項

UPDATE 2015/07/17

2015年7月15日のFileMaker Go 14.0.2 へのアップデートで指摘の問題は修正され、従来からの動作になりました。

それでもWebビューアへの影響は14.0.2でも変更ありませんでした。これはWebビューアを固定サイズではなくアンカー設定などで大きくする場合だけかもしれません。新しい仕様と判断する必要がありそうです。


Write 2015/06/09

今日は結構コアな話を少しお伝え、注意喚起をさせていただきます。

ただしこれはFileMaker Go 14.0.1 の初期リリースバージョンに関しての考察であり、これはバグなのか仕様なのか判断ついていません。

先月リリースされた FileMaker Go 14 で機能追加されたスクリプトステップのオプション「レコードの編集ツールバーを含める」オプションを設定して”隠す”にすると(図1)、以前まであったキー入力時にFileMaker Go特有の編集ツールバー(図2)がでなくなり(図3)、よりネイティブアプリらしくなります。

図1

 

図2

 

図3

 

 

ここで注意が必要です。図2、図3はどちらも”国”というテキストフィールドがレイアウトの最下部に配置されているレイアウトで、その”国”フィールドにカーソルが入っている状態です。ご覧のとおり図2はキーボードが下から出て、それに伴ってレイアウトが上方に移動して”国”フィールドが見えているのに対して、図3はキーボードの裏に隠れたまま、つまりキーボードの登場に伴う上方への移動がありません。そのためキーボード位置に隠れるない場所のフィールド入力が前提になります。

じゃああまり使わない方がいいかというと、逆の状況により積極的に使わなければいけない状況もあります。

そのケースはWebビューアを配置しているレイアウトでの問題です。このケースでは図1の設定を積極的に使う必要があります。図1の設定を行わないときはWebビューア内へのキーボード入力の場合はどうしても一瞬「レコードの編集ツールバー」がでてしまうんです。また、弊社のDrawMasterではWebビューアの領域が変わったらそれに合わせて背景の写真や手書きを再描画しているんですが、この「レコードの編集ツールバー」が一瞬出る、そしてすぐ「レコードの編集ツールバー」が消える、と領域が変わったトリガーが2回発火して、なかなか変な動作になります。このキーボードが出ている出ていないでWebビューア領域も変化するというのは新バージョンの仕様変更なのか、バグなのか、、。DrawMasterユーザーへはJavaScriptのアップデートをこれから案内させていただく予定ですが、みなさんでも「Webビューア内で window.innerHeight などで大きさを取得している」場合はこの仕様変更!?の注意が必要です。

 
ブログ一覧へ

FileMaker 14 プラットフォームと ScanSnap の連携

FileMaker プラットフォームと ScanSnap を連携させる

動画内で説明している大切なポイント

・ScanSnap Manager のファイルの保存先とファイル名には 2バイト文字を含めない

・FileMaker データベースの共有を許可する設定にしておく

動画の内容の補足

・FileMaker ネットワークで共有している場合は動画の最後で説明している
[ウインドウを閉じる]スクリプトステップの追加は不要

・Host が IP アドレスではなくドメインの場合は 「PrefsText」フィールドの
入力値の自動化オプションの計算式を下記の様に変更する

Case ( not IsEmpty ( HostNameOverride ) ; HostNameOverride ; CurrentHostIP )  & “¶” & FileName & “¶” & ScriptName

こちらの動画は「Macお宝鑑定団 blog(羅針盤)」でご紹介頂きました。

http://www.macotakara.jp/blog/category-57/entry-27029.html

 
ブログ一覧へ

FileMaker Go 14 新機能紹介 録画

先日発売2週間後に、ファイルメーカー公式サイト上でWebセミナー(インターネット上で配信されるセミナー)を2つ担当しました。本セミナーの録画がご覧いただけますのでリンク情報を掲載いたします。

FileMaker Go 14でネイティブアプリのようなソリューションをつくろう(レイアウト編)

新バージョンではレイアウト表示に関する数多くの機能が追加され、まるでネイティイブアプリのような細かい制御が可能になりました。新バージョンで追加された細かい設定を一通り解説し、どういった場面で使うと有効かもお伝えいたします。

録画されたセミナーを見る

FileMaker Go 14でネイティブアプリのようなソリューションをつくろう(動画・音声編)

新バージョンでは、AVPlayerスクリプトが追加され、今まで難しかった動画や音声の再生を柔軟に制御できるようになりました。機能の説明や注意点などをご紹介します。また、この機能を使って動画や音声にかぎらずiOSで今まで実現できなかった機能のデモもご覧頂きます。

録画されたセミナーを見る

 
ブログ一覧へ

FileMaker Webセミナーから計算式の紹介

2015.5.25 FileMaker Webセミナー

FileMaker Go 14でネイティブアプリのようなソリューションをつくろう(レイアウト編)
プレゼンテーション内で紹介した[プレースホルダテキスト]で利用できる計算式 TIPS。

・フィールド名を表示するための計算式

GetValue ( Substitute ( GetFieldName ( Self ) ; “::” ; ¶ ) ; 2 )

解説:

自分自身の完全修飾フィールド名(TO名::フィールド名:以下 FQFN)を GetFieldName ( Self ) で取得。

Substitute で FQFN の「::」を「¶」に置換。

置換後の文字列から GetValue で 2 行目のみを取得。

 

・フィールドコメントを表示するための計算式

FieldComment ( Get ( ファイル名 ) ; GetFieldName ( Self ) )

 

解説:

開いているファイルから自分自身の FQFN に設定されているフィールドコメントを取得。
ぜひ、お試し下さい。

 
ブログ一覧へ

FileMaker Go にしゃべらせる「 Web Speech API 」

2015/11/23 : 本文中の文字のコピペで使用する場合にシングルコーテーションが別の文字に変わってしまうことがあるようです。コピペした後にシングルコーテーションをあらためて文字入力し直してください。

Safariに Web Speech API というものがある。これを使えばSafariがしゃべりだす。ということは、FileMaker Go や Pro の Webビューア でも可能ということになります。
今回検証してみた結果確かに実行可能であり、さらにいろんな可能性が広がった。
まずは簡単にスクリプトの解説から

var voiceObj = new SpeechSynthesisUtterance();
voiceObj.volume = 1; // 音量 min 0 ~ max 1
voiceObj.pitch = 1;// 音程 min 0 ~ max 2
voiceObj.rate = 0; // 速度 min 0 ~ max 10
voiceObj.lang = ‘ja-JP’;
function speakAct(){
voiceObj.text = document.getElementById(‘text’).value; //喋る内容
window.speechSynthesis.speak( voiceObj );
}
function speakStop(){window.speechSynthesis.cancel( voiceObj );}
function speakPause(){window.speechSynthesis.pause( voiceObj );}
function speakResume(){window.speechSynthesis.resume( voiceObj );}

SpeechSynthesisUtterance のインスタンスを作成して、パラメータを設定して、window.speechSynthesis.speak()で実行する。
途中終了するには cancel()、一時停止pause()、再開resume()を実行するだけ。

あらまぁ、簡単。

注意点というか難点は、iOS Safari の制限などあるので自動実行するには、画面全体をWebビューアで作成する必要があるので、実際のソリューション作成にはある程度のWebビューアでの知識が必要になることぐらいか。
デモはこちらから、ぜひFileMakerGoのWebビューアからも試してみて欲しい。

view Demo

用途はしゃべるだけでなく、音程や速度をMaxにして操作音をならすという用途にも使えそう。

ちなみに、Windows はIEなので現在動きません。( 2015.3.14 )

 

【 開発者募集中 】

弊社では FileMaker を使った高度な技術力で、モバイルデバイスのビジネス利用を楽しく発展させていく仲間を随時募集しています。詳しくは採用ページをご覧ください。

 
ブログ一覧へ

ExecuteSQL 第4引数 ? の便利さ

投稿が滞っているので、少し小ネタを。

ExecuteSQL関数がver12から新設されました。計算式の指定にSQLのSELECT文で指定できるというのは非FileMaker開発者にとってはありがたいのかもしれないが、FileMakerを中心としている開発者にとってはそれよりも、従来のFileMakerの定番を超える値の取得ができるというのが最大のメリット。

その定番とは、FileMakerの常識では、グローバルフィールド以外は、このコンテキストとリレーションがつながっているTOの範囲までしか値の取得はできないことだ。( ちなみにFileMakerでは現在表示中レイアウトのテーブルオーカレンス( 以下 TO という)又は、データベース定義のフィールド内の計算式では「次のコンテキストからこの計算式を評価する」で選択するTO のことをコンテキストという。余談 : グローバルフィールドに関してはこのコンテキストとは無縁でいつでもどこでも値が取得できます。)

さて、そのExecuteSQL関数を使用するときに気をつけたいうっかりポイントが、SELECT文内に値を渡すときの形式だ。例えば

ExecuteSQL ( SELECT * FROM “TO01名” WHERE “フィールド名01” = ‘3’ ; “” ; “¶”)

はフィールド名01がフィールドタイプがテキストの時のみ有効で、フィールドタイプが数字だったらエラーとなる。同様にもしフィールドタイプが日付のときだったら、

ExecuteSQL ( SELECT * FROM “TO名” WHERE “フィールド名02” = DATE ‘2015-01-19’ ; “” ; “¶”)

という式になる。DATEという文字を入れなければならない上に、年月日の区切りを-にする必要がある (とマニュアルには書いてはあるが実際は DATE ‘2015/1/19’ でも可能) 。

これは面倒である。TO名やフィールド名はGetFieldName関数を使えば後で変更されても式を変更しなくてもいい。しかしフィールドタイプが数字からテキストに変更するということは開発途中ならあり得ること。丁寧に書こうとすると、渡す値はフィールドタイプを先に取得して条件分岐して記述する必要がでてくる。

しかしExecuteSQL関数はオプションとして第4引数以降を与えることができ、この悩みを自動的に解決してくれるというのが今回の目玉。上記の式は次のように書くとFileMakerから扱いやすい。

ExecuteSQL ( SELECT * FROM “TO01名” WHERE “フィールド名01” = ? ; “” ; “¶” ; “3” )

ExecuteSQL ( SELECT * FROM “TO01名” WHERE “フィールド名01” = ? ; “” ; “¶” ; 3 )

ExecuteSQL ( SELECT * FROM “TO01名” WHERE “フィールド名01” = ? ; “” ; “¶” ; コンテキストTO::数字フィールド )

ExecuteSQL ( SELECT * FROM “TO名” WHERE “フィールド名02” = ? ; “” ; “¶” ; Date ( 1 ; 19 ; 2015 ) )

ExecuteSQL ( SELECT * FROM “TO名” WHERE “フィールド名02” = ? ; “” ; “¶” ; “2015/01/19” )

ExecuteSQL ( SELECT * FROM “TO名” WHERE “フィールド名02” = ? ; “” ; “¶” ; コンテキストTO::日付フィールド  )

要は文中の値の指定に?クエスチョンマークを入れ、第4引数に値を与える。フィールドタイプを意識しなくても、また変換しなくても、FileMaker的な与え方で式を完成させることが出来ます。

最後に補足として、
・SELECT文内に?をいくつでも記載し、その順番や数に応じた第5、第6、~ と連続して引数を渡すことも可能です。
・結果が日付やタイムスタンプの場合は、年月日の区切りは-ハイフン区切りになっています。そのままでもFileMakerは日付として受け入れします。しかし日付を/スラッシュ文字などを目印にして抜き出すなどのテキスト関数を使っている場合は、GetAsDate関数を使っても/スラッシュ区切りに変換してくれません。ご注意ください。

 
ブログ一覧へ