Ajaxフレームワークアプリケーションを開発する際は、セキュリティに関して、以下の点に注意してください。
JavaScriptやCSSを外部ファイルにした場合は、アプリケーションに認証の仕組みを実装していても、アプリケーション外からJavaScriptやCSSにアクセスすることが可能な場合があります。そのため、JavaScriptやCSSには、コメント部分も含めて、アプリケーション外への漏えいを防ぐべき情報(秘密情報)を記述しないでください。
秘密情報を画面上に表示する場合は、HTMLやJSPファイル内に直接記述したうえで認証の仕組みを実装するか、直接記述せずにサーバから動的にデータを取得するようにしてください。
入力値をチェックする場合は、クライアント側とサーバ側の両方でチェックしてください。
クライアントでチェックする場合は、機能部品のModelでデータオブジェクトのスキーマを定義することができます。
サーバ側でチェックする場合は、Apcoordinatorが提供するXMLデータ仕様記述を利用することができます。
また、予期しないデータが送信された場合や、セション情報に不整合がある場合(セション内に必要なデータが格納されてない状態で、次のデータが送信されてきた場合など)は、アプリケーションの処理を継続しないように注意してください。
Ajaxフレームワークが提供する画面部品では、画面表示時に以下の5種の文字をエスケープして表示しています。
& < > " ' |
ただし、Button部品のコンテンツに記述された文字列、および以下のプロパティに指定されたオブジェクト内の処理はエスケープされませんので、アプリケーションでエスケープ処理を実施してください。
SelectList
・rendererプロパティ
TabPanel
・tabRendererプロパティ
DataGrid
・selectedRendererプロパティ
ViewColumn
・rendererプロパティ
ViewColumnGrid
・rendererプロパティ
・selectedRendererプロパティ
ViewColumnCheck
・rendererプロパティ
・selectedRendererプロパティ
ViewColumnTree
・rendererプロパティ
・selectedRendererプロパティ
ViewColumnSelect
・rendererプロパティ
・selectedRendererプロパティ
ViewColumnImage
・rendererプロパティ
・selectedRendererプロパティ
Calendar
・naviButtonRendererプロパティ
・dayOfWeekCellRendererプロパティ
・dateCellRendererプロパティ
PopupCalendar
・naviButtonRendererプロパティ
・dayOfWeekCellRendererプロパティ
・dateCellRendererプロパティ
イベントログ機能は、非同期通信でログをサーバ側に送信する機能です。ログの書込みに対して信頼性を保証する必要がある場合は、サーバ側の業務ロジックで行うようにしてください。
クライアントから複数のリクエストが同時に送信された場合、サーバ側の業務ロジックが同時に実行される可能性があります。同時に実行すべきではない業務処理については、アプリケーションで排他制御を行うようにしてください。