2017-04-02 14 views
-1

私はcoldfusionでのセッションとクライアントの管理に関していくつかの疑問を持っています。コールドフュージョンでセッションがどのように機能しますか?

注:URLにCFIDとCFTOKENが指定されている場合の動作は次のとおりです。セッションが存在する場合、URLのCFIDとCFTOKENは無視されます。セッションが存在しない場合は、URLのCFIDとCFTOKENを使用してセッションを検証し、セッションが有効であればセッションが使用されます。セッションが有効でない場合、新しいセッションが作成されます。 CFIDとCFTOKENが再生されます。

これは、Adobe ColdFusion online documentationの記述です。以下は私の質問です

  1. 最初の文のようにCFIDとCFTOKENの助けなしにセッションが存在するかどうかをColdFusionが確認する方法はありますか?
  2. ColdFusionセッション管理を使用しているとします。ログイン後にCFTOKENとCFIDが変更されない場合、セッションをハイジャックできますか?
+0

ColdFusionセッションおよびクッキーに関する推奨事項については、[ロックダウンガイド](http://wwwimages.adobe。 com/content/dam/acom/en/products/coldfusion/pdfs/coldfusion-2016-lockdown-guide.pdf)を参照してください。 –

答えて

1

ColdFusionでは、有効なセッションがCFIDとCFTOKENがCookieスコープに存在するかどうかをチェックしてチェックします。 CFIDとCFTOKENのCookieが存在する場合は、Cookieの値を使用してセッションを試行し、検証します。 Cookie値を使用してセッションを検証できない場合は、URL値を使用してセッションを試行して検証します。

+0

私はそれを正しく理解していれば、ドキュメントはクッキーが無効になっているこのケースを示しています。セッションが存在すると、URLのCFIDとCFTOKENは無視されます。この行は私を混乱させます。 ColdFusionがセッションが存在するかどうかを確認するクッキーがない場合は、 – Vineesh

+0

ACFは、CFID/TOKEN、またはJSESSIONID(CF管理者設定によるJEEセッション)を使用してセッション状態を維持します。これらの変数がないと、ACFはセッション状態を維持できません。あなたを混乱させる特定のドキュメントへのリンクがありますか? –

+0

https://helpx.adobe.com/coldfusion/developing-applications/developing-cfml-applications/using-persistent-data-and-locking/managing-the-client-state.html - この「クライアントとセッションの使用」クッキーなしの変数 "このセクション – Vineesh

0

Using client and session variables without cookies

ユーザーがブラウザでCookieを無効にすることが可能です。この場合、ColdFusionは自動的にクライアントの状態を維持することができません。クライアントの識別情報をアプリケーションページ間で渡すことで、クッキーを使用せずにクライアントまたはセッション変数を使用できます。次のようにしかし、この技術は、重大な制限があります。

  1. クライアント変数は、彼らがクライアントデータストアで使用できないデータを残すことを除いて、効果的にセッション変数と同じです。 クライアントのシステムには識別情報が保持されないため、次回のログオン時にColdFusionで以前のクライアントでユーザーを識別することはできず、ユーザーの新しいクライアントIDを作成する必要があります。以前のセッションのユーザーに関する情報は使用できませんが、ColdFusionで削除されるまでクライアントデータストレージに残ります。 ColdFusion Administratorで[未訪問のクライアントのデータを消去する]オプションをオフにすると、ColdFusionはこのデータを決して削除しません。 したがって、ユーザーがCookieを無効にできるようにする場合は、クライアント変数を使用しないでください。クッキーなしでクライアント情報を保持するには、ユーザーに一意のIDでログインする必要があります。その後、ユーザーのIDをキーとしてユーザー固有の情報をデータベースに保存できます。

  2. 新しいリクエストにセッションまたはクライアントを示すための状態情報が含まれていないため、ColdFusionはユーザがブラウザで直接ページをリクエストするたびに新しいセッションを作成します。

注:ColdFusionを使用するには第

へのApplication.cfcでThis.setClientCookies変数を設定することにより、クッキーとしてブラウザにクライアント情報を送信することから、ColdFusionを防止またはcfapplicationタグの属性setClientCookiesすることができますクッキーを使用せずにセッション変数を使用する場合、各ページはCFIDおよびCFToken値をリクエストURLの一部として呼び出すページに渡す必要があります。ページにHTMLのhrefa =リンク、cflocationタグ、フォームタグ、またはcfformタグが含まれている場合、タグはタグURLのCFID値とCFToken値を渡す必要があります。J2EEセッション管理を使用するには、ページ要求でjsessionid値を渡します。 ColdFusionクライアント変数とJ2EEセッション変数を使用するには、URLにCFID、CFToken、およびjsessionidの値を渡します。

注:URLにCFIDとCFTOKENが指定されている場合の動作は次のとおりです。セッションが存在する場合、URLのCFIDとCFTOKENは無視されます。セッションが存在しない場合は、URLのCFIDとCFTOKENを使用してセッションを検証し、セッションが有効であればセッションが使用されます。セッションが有効でない場合、新しいセッションが作成されます。 CFIDとCFTOKENが再生されます。

ColdFusionは、次の処理を行いURLSessionFormat機能を提供します。

クライアントがクッキーを受け入れない場合は、自動的にURLに必要なすべてのクライアント識別情報を付加します。

クライアントがCookieを受け入れる場合は、情報を追加しません。 URLSessionFormat関数は、必要な識別子を自動的に判別し、必要な情報のみを送信します。また、必要な情報のみを送信し、コード化が容易なため、各URLの情報を手動でエンコードするよりも、クライアント識別をサポートするために、より安全で堅牢な方法を提供します。

URLSessionFormat関数を使用するには、関数に要求URLを囲みます。あなたが複数のURLSessionFormat機能で同じページのURLを使用する場合は

<cfform method="Post" action="#URLSessionFormat("MyActionPage.cfm")#> 

は、あなたが小さなパフォーマンスの向上を獲得し、簡素化することができます。たとえば、次のcfformタグ別のページへの要求は、必要に応じて、クライアント識別を送信しますフォーマットされたページURLを変数に割り当てた場合のコード:

<cfset myEncodedURL=URLSessionFormat(MyActionPage.cfm)> 
<cfform method="Post" action="#myEncodedURL#"> 
+0

私はこの答えの最初の文に同意しません。人々がクッキーを無効にすることは可能ですが、私はクッキーが思うよりも頻繁に起こるとは思っていません。 –

+0

@ダンブルクック私はそれに同意します。 –

関連する問題