intra-mart Accel Platform IM-Workflow プログラミングガイド 第21版 2019-12-01

8.5.3. 特記事項

8.5.3.1. IM-Workflow バージョン8.0.2 における改善

IM-Workflow バージョン8.0.2 から、連続処理/連続確認中の画面遷移仕様を改善しています。
  • IM-Workflow バージョン8.0.1 までの動作仕様

    • 処理完了後の遷移先指定は無視されます。
    • 処理完了後の遷移先指定の有無に関わらず、処理完了後は次の案件のユーザコンテンツが表示されます。
  • IM-Workflow バージョン8.0.2 以降の動作仕様

    • 処理完了後の遷移先指定が行われている場合、処理完了後は指定された画面に遷移します。
※ IM-Workflow スマートフォン では、連続処理/連続確認機能が存在しないため、上記を意識する必要はありません。

8.5.3.2. 意図しないURLに対するバリデーション

「imwNextPagePath」には、ルーティング設定によってマッピングされたURLが指定されることを前提としていますが、絶対URLを指定された場合でも動作します。
これは処理完了後の画面遷移先として IM-Workflow と連携する外部システムのURLも設定可能とするためで、 IM-Workflow Ver.7.2.x との互換性を保つための仕様です。
「workflowOpenPage」タグライブラリ、および「spWorkflowOpenPage」タグライブラリでは、明示的に外部システム等のURLを指定される可能性のある「imwNextPagePath」と、「imwNextApplicationId」および「imwNextServiceId」に対して、テナント単位で設定が可能な「セーフURLリスト」に存在するかチェックを行います。
チェックには、intra-mart Accel Platform が提供するAPI 「SafeUrlManager#isSafe(String url)」 を使用しています。
ワークフローエンジンとしては上述の通りURLバリデーションチェックを行っていますが、同様のチェックがユーザコンテンツで必要となる場合があります。
たとえば、ユーザコンテンツでの画面遷移処理(例:「imwCallOriginalPagePath」を利用して一覧へ戻る)における遷移先パスが何らかのタイミング(ユーザコンテンツ間での画面遷移の最中など)で意図しないURLに改ざんされた場合、改ざん後のURLへの遷移を防止するためには、URLバリデーションチェック処理を独自に実装していただく必要があります。
チェックには 「SafeUrlManager#isSafe(String url)」 が利用可能です。
APIの詳細については 「 APIドキュメント 」 を参照してください。
また、セーフURLの設定方法については 「 テナント管理者操作ガイド 」 を参照してください。
「SafeUrlManager#isSafe(String url)」を利用したURLバリデーションチェックのサンプル実装(スクリプト開発モデル)を示します。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
var safeUrlManager = new SafeUrlManager();
var result = safeUrlManager.isSafe(url);
if (result.error) {
    // URLチェック実行に失敗した場合の処理
    Transfer.toErrorPage(
        {
            "title" : "URL バリデーションエラー",
            "message" : "URLチェック実行に失敗しました。管理者に連絡してください。"
        }
    );
}
if (!result.data) {
    // 指定したURLがセーフURLリストに存在しない場合の処理
    Transfer.toErrorPage(
        {
            "title" : "URL バリデーションエラー",
            "message" : "安全ではないURLが指定されています。管理者に連絡してください。"
        }
    );
}