最近のアクセス:
Web 開発のセキュリティに関するヒント

Web アプリケーションの開発時には、セキュリティに関するいくつかのヒントと考慮事項が該当します。
このドキュメントでは、それらの一部について説明します。

概要

GeneXus アプリケーションのセキュリティリスクに対処するために 3 種類のアクションを行うことができます。ほとんどの場合、安全な Web アプリケーションの開発と配布において、その 3 つが重要な役割を果たします。
これらのアクションは、生成時に GeneXus で自動的に処理されます。いくつかの例を次に示します。GeneXus は、パラメーター化された SQL 文を生成して SQL インジェクションを防ぎます。また、各 HTTP Post 用の自動セキュリティチェックを生成して、読み取り専用データが変更されていないかどうかを検出します。 
GeneXus でのプログラミングの際のユーザーアクションです。GeneXus 開発者は、開発タスクの実行時にこれらのアクションについて考慮する必要があります。
これらのアクションは、インフラストラクチャ担当者の責任において行われます (サーバーの設定など)。

論理的根拠

GeneXus は多くのアクションを自動的に処理しますが、開発者はセキュリティに関するいくつかの項目を考慮し、それらを組み合わせることで、セキュリティ障害が発生しない Web アプリケーションを実現する必要があります。
最初に、「Managing OWASP 2013 Top 10 Security Risks in GeneXus Applications」、「Managing OWASP Top 10 2017 in GeneXus Applications」を参照してください。

クライアント側で使用する機密データの保護

クライアント側での一部のアクションの実行に必要なため、機密データ (クレジットカード情報、ユーザー ID など) を公開する必要がある場合があります。
ここでは、ユーザーによるデータの入力や変更が行われないシナリオについて考えてみましょう。そのような場合は、ログインプロセスや安全なチャネルでの通信の使用など、その他のセキュリティメカニズムを検討する必要があります。
クライアントからサーバーに送信されるデータは必ずサーバー側で検証する必要があります。
[ Encrypt URL parameters ] プロパティはパラメーターをマスクする目的でのみ使用されます。セキュリティ機能の基盤として使用することはできません。
また、クライアント側で実行されるデータ入力の検証だけでは不十分です。クライアント側の検証は、より使いやすい UI を作成するために実行されます。
次の 3 種類のデータがあります。
  1. クライアントが変更可能なデータ。このシナリオは、このセクションの対象外です。
     
  2. クライアントに表示する必要がある (変更はできない) データ。

    たとえば、資金振替の際は、送金者の口座がユーザーに表示され、ユーザーは振替元の口座をコンボボックスから選択できます。ただし、サーバー側で情報を再確認して、ログインしたユーザーが所有するアカウントかどうかを検証する必要があります。この確認については GeneXus ユーザーが責任を負います。
     
  3. クライアントに表示されず、変更もできないデータ。

    たとえば、アクションの実行には必要ですが、ユーザーがアクセス (読み取りも) できないデータを転送する場合などです。このようなデータをフォームに含めることはできません。[ Visible ] プロパティは UI プロパティであり、セキュリティの目的で使用することはできません。ユーザーインターフェースでのみ使用します。フォームに含まれているデータが非表示であるとしても、データは HTML に保持されているためアクセス可能な状態です。

    このデータは、Web パネルのユーザーイベントでは取得しないでください。それでも、GeneXus X Evolution 3 Upgrade 13 と GeneXus 15 Upgrade 3 (SAC #40775) で関連するセキュリティの改善が行われました。それにアクセスするプロシージャーとデータプロバイダーを、代わりに使用する必要があります。 
前述の 2 と 3 の問題を "読み取り専用の機密データの問題" とします。

読み取り専用の機密データに関するヒント

1.Web パネルのパラメーターにデータが含まれている場合は、Parm ルールでの IN 演算子の使用を検討します。
IN 演算子を使用すると、開発者はパラメーターをコードから変更できません。また、実行時には、入力パラメーターを途中で変更できません。変更しようとすると、HTTP 403 エラーがスローされます。これは、データが画面に表示されるかどうかに関係なく有効です。
注:
[ Web User Experience ] が Smooth の場合、GeneXus 15 以降であればこの方法を利用できます。
GeneXus Evolution 3 の場合と [ Web User Experience ] が Previous Versions Compatible に設定されている場合は、SAC #39716 を参照してください。
2.画面上の変更できない読み取り専用データについて、GeneXus は Web トランザクションと Web パネル (Web コンポーネントとマスターページを含む) で自動セキュリティチェックを追加します。これにより、読み取り専用の機密データを変更できなくなります。データが変更された場合は、POST がキャンセルされて、HTTP 403 エラーがスローされます。
Web トランザクションで、読み取り専用の機密データと見なされる項目属性の条件は次のとおりです。 
  • 項目属性に対して条件なしの NoAccept ルールがある。
  • モードに対する条件付きの NoAccept ルールがある (モードはパラメーターとして受け取られます)。
  • トランザクションのキーをフォームに含めることはできない。
Web トランザクションが NoAccept ルールを追加し、項目属性がいずれかのイベントで有効な場合は、実行時に HTTP 403 エラーがスローされる可能性があることを警告する次のメッセージがスローされることがあります:  spc0204 : ''Enabled'' property assignment over attribute %1%2 conflicts with ''%3'' rule.'
Web パネルでは、NoAccept(&var) などのルールに関連する変数が実行時に変更されないことの確認が行われます。読み取り専用コントロール (設計時に [ ReadOnly ] プロパティが True であるコントロール) に対しても同様の確認が行われます。
これらのセキュリティチェックでは、[ Encrypt URL parameters ] プロパティ (値が Session Key に設定されている場合) から取得したものと同じセッションキーを使用します。

参考情報

スムースモデルでのセキュリティ上の考慮事項
GeneXus Access Manager (GAM)
トラブルシューティング: SAC #41179



サブページ
Created: 17/05/30 19:02 by Admin Last update: 21/05/21 02:39 by Admin
カテゴリ
Powered by GXwiki 3.0