0

あるドメインにログイン ページがあり、別のドメインにアプリケーションがあります。

別のドメインからのログインを使用すると、2 番目のドメインがセッション変数を作成したにもかかわらず、セッション変数が 2 番目のドメインに保存されません。

明確にするために、私はドメイン間でセッションを共有していません

ログイン ドメインは、アプリがセッション変数を作成するアプリ ドメインでスクリプトを実行します。この変数は、アプリ ドメイン内でリダイレクトが呼び出されたときに転送されません。

同じドメインからスクリプトを呼び出すと、セッションは期待どおりに保存されます。面白いことに、これは今日まで問題なく機能していました。いくつかの cf 設定が変更された可能性があります。

CFID と CFTOKEN が渡されていることに気付きました。参照元の Web サイトの CFID と CFTOKEN を使用してセッションが書き込まれている可能性はありますか?

もしそうなら、どうすればそれを防ぐことができますか?

4

1 に答える 1

3

Application.cfc で設定することにより、デフォルトのセッション Cookiethis.setclientcookies = falseの動作を上書きし、Application.cfc で cfcookie を発行することができます。onSessionStart()

例えば

<cfcomponent>
  <cfset this.sessionmanagement = true>
  <cfset this.setclientcookies = false>
  <cffunction name="onSessionStart">
      <cfcookie name="CFID" value="#session.cfid#" domain=".subdomain.domain.com">
      <cfcookie name="CFTOKEN" value="#session.cftoken#" domain=".subdomain.domain.com">
  </cffunction>
<cfcomponent>

httpOnlyその際、属性も trueに設定することをお勧めします。

于 2013-03-05T21:50:17.947 に答える