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) のパッチを適用したリリースにアップグレードすることです。