1

Coldfusion 9 で Cookie CFIDE と CFTOKEN を HTTPOnly に設定しようとしています...

これが私が試したことです(エラーはありませんでしたが、機能しませんでした):

cookie.CFID = "#session.cfid#,httpOnly='true'";
cookie.CFTOKEN = "#session.cftoken#,httpOnly='true'";

私も試しました(うまくいきません...そしてエラーはありません):

cookie.CFID = "#session.cfid#;httpOnly='true'";
cookie.CFTOKEN = "#session.cftoken#;httpOnly='true'";

そしてこれ(これはCF10でのみ機能すると思います):

cookie.CFID = {value="#session.cfid#", httpOnly="true"};
cookie.CFTOKEN = {value="#session.cftoken#", httpOnly="true"};

次に、これ(エラーは発生しませんでしたが、機能しませんでした):

cookie( name="CFID" value="#session.cfid#" httpOnly="true" );
cookie( name="CFTOKEN" value="#session.cftoken#" httpOnly="true" ); 

これらを実行すると、Chrome で空のキャッシュのハード リロードが実行されます。ページがリロードされると、Resources Cookies HTTPOnly 列にチェック ボックスが表示されるはずです。

私はおそらく疲れ果てており、上記の正しいコンボを打った可能性があり、飛び回りすぎて失敗したと偽陽性になりました. キャッシュされたものが時々私を最大限に活用します。

機能する CFML コンテナ スタイルを持っていますが、Application.cfc はすべてスクリプト スタイルであり、それを維持したいと考えています...Coldfusion 9 でこのスクリプト スタイルを実行するにはどうすればよいですか?

ありがとうございます!

私の修正のための更新:

以下の getPageContex() を使用しましたが、そのままでは動作しませんでした。また、onSessionStart() イベント ハンドラーが変更され、Application.cfc ファイルでも新しくなった CreateUUID() を使用して session.CFID と session.CFTOKEN を作成するようになりました。後世のために、コードのブロックがどのように見えるかをここに示します。

function onSessionStart(){
getPageContext().getResponse().addHeader("Set-Cookie", "CFID=#session.CFID#;path=/;HTTPOnly");
getPageContext().getResponse().addHeader("Set-Cookie", "CFTOKEN=#session.CFTOKEN#;path=/;HTTPOnly");
}

別の注意:何らかの理由で、セッションがクリアされ、onsessionstart() ハンドラーが要求された場合、上記のこの Cookie の設定は失敗します。リロードの問題を考慮して、何らかの種類の try catch ブロックまたは例外処理を追加する必要があります。最善の方法は、Coldfusion 10 (またはまもなくリリースされる CF 11) のパッチを適用したリリースにアップグレードすることです。

4

3 に答える 3

1

PageContext オブジェクトを使用して、cfscript で Cookie を設定できます。

getPageContext().getResponse().addHeader("Set-Cookie", "CFID=#session.CFID#;path=/;HTTPOnly");
getPageContext().getResponse().addHeader("Set-Cookie", "CFTOKEN=#session.CFTOKEN#;path=/;HTTPOnly");
于 2014-04-26T07:51:16.100 に答える
1

セッション Cookie の場合は、もっと簡単な方法があります。

サーバー全体の HttpOnly セッション Cookie を有効にする

ColdFusion 9.0.1 アップデートでは、サーバー全体の設定が追加され、ColdFusion によって作成されたすべてのセッション Cookie (CFID および CFTOKEN Cookie、または JRun の JSESSIONID Cookie など) に httponly 属性が追加されました。この設定を有効にするには、JRun J2EE インストールまたはマルチサーバー インストールを実行している場合、jvm.config を編集する必要があります。それ以外の場合は、CF アドミニストレータからこの設定を有効にできます。JRun 以外の J2EE サーバーを実行している場合は、適切な設定についてドキュメントを参照してください。Servlet 3.0 仕様をサポートする J2EE サーバーは、/WEB-INF/web.xml ファイルで true を指定できます。

http://www.adobe.com/devnet/coldfusion/articles/coldfusion-securing-apps.html

于 2014-04-25T21:28:01.367 に答える
0

このコードは、application.cfc 内の onsessionstart 関数内で使用できます。

          <cfcookie name="CFID" value="#session.cfid#" httponly="true">
          <cfcookie name="CFTOKEN" value="#session.cftoken#" httponly="true">

これを cfscripts 内で設定する方法はありません。cfcookie は、cf9 のスクリプト形式ではサポートされていません。この問題に対処するために CF10 に追加されたアプリケーション設定にフラグがありますが、CF11 ではスクリプト内で完全にサポートされます。残念ながら、機能のために統一コードを放棄する必要があると思います。CFIDE/管理者にアクセスできない場合。Java 引数を追加して、サーバー全体で有効にすることができます。これをJVM構成に追加します

-Dcoldfusion.sessioncookie.httponly=true

詳細はこちらhttp://www.petefreitag.com/item/764.cfm

于 2014-04-25T21:50:00.310 に答える