6

CFC の優れた機能の 1 つは、そのままの .cfm ページと Flex アプリケーションの両方でコードを再利用できることです。

私が開発したそのようなアプリの 1 つは、そのチャート作成機能に Flex を使用しており、cfc の「getResults()」関数にアクセスする必要があります。

このコンテンツはすべて認証メカニズムの背後にありますが、cfc は wsdl リクエストに対してそれ自体を開くため、次のようになります。

https://myserver.com/c/functions.cfc?wsdl

URL クエリが適切に作成されていれば、実際にブラウザに結果が返されます。

https://myserver.com/c/functions.cfc?method=getResults&Term=2009&Course=解剖学

リクエストが CFML プロセッサまたは Flex Remoting から直接来ていない限り、cfc を直接アクセスから保護するために人々が使用した手法は何ですか?

4

6 に答える 6

4

CGI スコープ変数の一部を利用して、リクエストの送信元を確認できます。

すなわち: CGI.REMOTE_HOST、CGI.REMOTE_ADDR

したがって、サーバーの有効な値のリストに対してこれらの変数の値をチェックする access="public" プロパティを使用して新しい関数を作成することになるでしょう。true を返す場合はリクエストを実行し、false を返す場合は何らかのエラーをスロー/返します。

于 2009-05-22T23:26:23.323 に答える
3

OnRequestStart ハンドラーを application.cfc ファイルに追加し、そこでチェックを実行することをお勧めします...そのチェックは現在のモデルによって異なりますが、cgi.remote_user (認証されている場合) をチェックするか、おそらく保存することをお勧めしますセッションスコープに何か?

<cfif structKeyExists(session,"empID") and len(session.empid)>
  <!--- user is authenticated, process normally --->
<cfelse>
  <!--- abort request or sending meaningful error message --->
</cfif>
于 2009-05-23T17:16:37.187 に答える
1

私が好むことの 1 つは、XML または Struct のいずれかのメソッドごとに 1 つの引数のみを持ち、その XML または Struct に特定のノード/オブジェクト名が存在することを要求することです。

<cfif NOT StructKeyExists(arguments.myArgs, "requiredParam")>
    <cfxml name="myXML">
         <error>
             <message>Required parameter not found.</message>
         </error>
    </cfxml>

    <cfreturn myXML />
</cfif>

于 2009-05-26T13:24:02.690 に答える
0

何か他のものを探しているときにこの質問に出くわし、2pを追加すると思いました:

ログインした「管理者」ユーザーのみが利用できるようにしたいリモート CFC を使用するアプリがあります。この場合、CGI 変数チェックは、アプリのゲスト ユーザーに対して引き続きパスします。

管理者ユーザーがログインすると、セッション ID とログイン時間のハッシュを取得し、それをデータベースとセッション スコープに格納します。リモート CFC にアクセスすると、ハッシュを変数として渡し、管理者ユーザーのデータベースと照合します。

レコードが戻ってきたら、現在のユーザーが管理者であることがわかり、リクエストを続行します。

于 2012-06-20T11:31:13.580 に答える