1

私のフォームは次のようになります。

 <form name="foo_contact" action="<CFOUTPUT>#URLSessionFormat("index.cfm?foo=bar")#</CFOUTPUT>">

Cookie を無効にしてフォームを送信すると、URL は次のようになります。 index.cfm?foo=bar?CFID=12345&CFTOKEN=12312312これは予期したものではありません。それは読むべきですindex.cfm?foo=bar&CFID=12345&CFTOKEN=12312312

ここで何か間違ったことをしていますか?それを修正するために自分で関数を書く必要がありますか、それとも私が見逃した簡単な解決策はありますか?

4

3 に答える 3

2

簡単なオプション - 代わりに非表示のフォーム var を使用します。

<form name="foo_contact" action="<CFOUTPUT>#URLSessionFormat("index.cfm")#</CFOUTPUT>">
    <input type="hidden" name="foo" value="bar" />


代替オプション - 関連するものを後で変更し?ます&

<cfset ActionUrl = URLSessionFormat("index.cfm?foo=bar")
    .replaceFirst('(?<!^index\.cfm)\?','&') />

<form name="foo_contact" action="<cfoutput>#ActionUrl#</cfoutput>">

これ.replaceFirstは、負の後読み ( (?<!..)の部分) を持つ正規表現を使用して、?先行していない最初のものを見つけてindex.cfm置き換えます。

于 2012-09-11T12:20:44.603 に答える
0

次のように書く必要があります。

#URLSessionFormat("index.cfm")#&foo=bar
于 2012-09-11T12:04:53.387 に答える
0

CFID と CFTOKEN を使用する場合、潜在的なセキュリティの問題に注意する必要があります。これらの問題は、代わりに J2EE セッション管理を使用するだけで解決できます。以下は、 ColdFusion のドキュメントからの抜粋です。

クライアント識別子とセキュリティ

次のクライアント識別子の問題は、セキュリティに影響を与える可能性があります。

  • CFToken 識別子の一意性と複雑性の確保
  • セッション識別子の利用を制限する

次のセクションでは、これらの問題について説明します。

CFToken の一意性とセキュリティの確保

デフォルトでは、ColdFusion は CFToken 識別子に 8 桁の乱数を使用します。この CFToken 形式は、ほとんどの状況でユーザーに一意で安全な識別子を提供します。(ColdFusion では、この数値を生成する方法として、サーバーの起動時にのみシードされる暗号強度の乱数ジェネレーターが使用されます。)

ただし、ColdFusion Administrator では、[設定] ページを有効にして、より複雑な CFToken 識別子を生成できます。[UUID を cftoken に使用] オプションを有効にすると、ColdFusion は、ColdFusion UUID の前に 16 桁のランダムな 16 進数を付加して CFToken 値を作成します。結果の CFToken 識別子は次のようになります。

3ee6c307a7278c7b-5278BEA6-1030-C351-3E33390F2EAD02B9

セッション セキュリティの提供

ColdFusion は、Client スコープと標準の Session スコープに同じクライアント識別子を使用します。CFToken と CFID の値は一定期間にわたってクライアントを識別するために使用されるため、通常はユーザーのブラウザーに Cookie として保存されます。これらの Cookie は、クライアントのブラウザーがそれらを削除するまで存続しますが、これにはかなりの時間がかかる可能性があります。その結果、ハッカーは、ColdFusion がセッションごとに異なるユーザー ID を使用する場合よりも、これらの変数により多くアクセスできます。

ユーザーの CFToken および CFID Cookie を持つハッカーは、盗んだ CFToken および CFID Cookie を使用してユーザーのセッション中に Web ページにアクセスすることにより、ユーザー データにアクセスする可能性があります。このシナリオはありそうにありませんが、理論的には可能です。

この脆弱性は、ColdFusion Administrator の [メモリ変数] ページで [J2EE セッション変数を使用] オプションを選択することで削除できます。J2EE セッション管理メカニズムは、セッションごとに新しいセッション ID を作成し、CFToken または CFID Cookie 値を使用しません。

セキュリティ関連の変更

ColdFusion 9 Upgrade 1 にアップグレードすると、次のセキュリティ関連の仕様が適用されます。

  • CFID、CFTOKEN、および jsessionid は httpOnly とマークされます。これにより、クロス サイト スクリプティング (XSS) 攻撃でセッション情報が侵害される可能性が減少します。
  • セッション Cookie の次のシステム プロパティを httpOnly に設定します: Dcoldfusion.sessioncookie.httponly=true
  • セッション Cookie の httpOnly へのサポートは、使用するアプリケーション サーバーによって異なります。

    • Tomcat/JBoss の場合、JSESSIONID に対して httpOnly はサポートされていません
    • JRun で、システム プロパティ Dcoldfusion.sessioncookie.httponly=true を jvm.config ファイルに追加します。
    • その他のアプリケーション サーバーについては、セッション Cookie の httpOnly サポートの詳細について、関連ドキュメントを参照してください。
于 2012-09-11T13:01:58.670 に答える