Pergunta

Uma das grandes características do CFC é a capacidade de reutilizar o código para uma página .cfm em linha reta e para aplicativos Flex.

Um tal app que eu devleoped usos Flex para as suas capacidades de gráficos e precisa de acesso a um 'getResults ()' função no cfc.

Todo este conteúdo está por trás de um mecanismo de autenticação, mas desde que a cfc vai abrir-se a um pedido wsdl:

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

e irá realmente retornar os resultados para o navegador se a consulta URL é trabalhada corretamente:

https://myserver.com/c/functions.cfc ? method = getResults & Term = 2009 e Curso = Anatomy

O que técnicas têm pessoas usado para proteger o cfc de acesso directo menos que o pedido está vindo diretamente do processador CFML OR de Flex Remoting?

Foi útil?

Solução

Você poderia utilizar algumas das variáveis ??de escopo CGI para verificar se o pedido está vindo.

ou seja: CGI.REMOTE_HOST, CGI.REMOTE_ADDR

Assim, você provavelmente construir uma nova função com um access = propriedade "pública", que verifica os valores dessas variáveis ??contra uma lista de valores válidos para o seu servidor. Se ele retorna true, você deve executar o pedido e se ele retorna false, você jogaria / retornar algum tipo de erro.

Outras dicas

Gostaria de sugerir adicionando um manipulador de OnRequestStart ao seu arquivo Application.cfc, e executar uma verificação de lá ... o que esse cheque é depende do seu modelo atual, mas algumas boas sugestões seria a de verificar cgi.remote_user (se autenticado) ou talvez guardar algo no escopo da sessão?

<cfif structKeyExists(session,"empID") and len(session.empid)>
  <!--- user is authenticated, process normally --->
<cfelse>
  <!--- abort request or sending meaningful error message --->
</cfif>

Que tal usar o novo atributo papéis? Todo mundo que visita o seu site recebe automaticamente cflogin roles = "público".

Uma coisa que eu prefiro fazer é ter apenas um argumento para cada método - XML ??ou Struct -. E requerem um certo nome do nó / objeto de estar presente nesse XML ou struct

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

    <cfreturn myXML />
</cfif>

Embora um pouco velho, eu desenterrar notas de Bill Purcell em garantir CF aplicativos em geral. Fixação de CFC têm mencionado.

http://www.bpurcell.org/blog/index .cfm? mode = entrada & entrada = 978

Apenas me deparei com esta questão, enquanto olhando para outra coisa e pensei em adicionar o meu 2p:

Eu tenho um aplicativo usando um CFC remoto que eu só quero estar disponível para usuários logados 'admin'. Neste caso, a verificação variável CGI ainda passaria para usuários convidados do aplicativo.

Quando um usuário administrador faz logon, eu tomo um hash de seu ID de sessão e tempo de login e loja que no banco de dados eo escopo de sessão. Quando eu bati o CFC remoto, eu passo o hash como uma variável e verificar se contra o banco de dados de usuários de administração.

Se um registro de volta, eu sei que o usuário atual é admin e eu continuar com o pedido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top