2012-12-02 3 views
1

매분마다 실행해야하는 scheduled task이 있습니다. 외부에서 호출되는 파일을 차단하려면, 그래서 같은 호스트와 전화 IP 주소를 비교하려면 :Coldfusion 객체가 한 번만 생성되도록하는 방법은 무엇입니까?

<cfif NOT structKeyExists("variables", caller)> 
    <cfset variables.caller = createObject("java", "java.net.InetAddress")> 
</cfif> 

<cfif variables.caller.getLocalHost().getHostAddress() EQ cgi.remote_addr> 
    // run task 
</cfif> 

질문 :
정말 ColdFusion에서의 objects 작업에 익숙하지 않아요, 그래서 것 이 방법은 객체가 한 번 생성되고 작업이 호출 될 때마다 재 작성되도록하는 방법일까요? 이것이 내 관리 섹션에서 실행되기 때문에, 즉시 애플리케이션 범위에서 객체를 생성해야합니까?

일부 입력 해 주셔서 감사합니다!

+1

이유를 설정하지 디렉토리 권한 : 페이지는 그들 만이 켜져 있는지 컴퓨터에서 실행되는 것을 확인에

한 가지 방법은 있나요? 이것이 분당 – Russ

+0

hm이라고 불리우면 많은 오버 헤드를 줄일 수 있습니다. 무슨 뜻인지 잘 모르겠 니? – frequent

+2

@Russ는 cf 파일이 예약 된 작업에 의해서만 호출 될 수 있다는 것을 확인시켜주었습니다. 작업이 실행될 때마다 개체가 생성되도록하려면 아무 것도 할 필요가 없습니다. cf 파일에서 작성한 객체는 파일의 실행이 완료되면 파기됩니다. –

답변

1

요청이 예약 된 작업 인 경우에도 요청을 실행하면 요청이 완료되면 모든 변수가 삭제됩니다. 세션, 응용 프로그램 및 서버와 같은 변수 만 요청간에 지속됩니다. 대신

<cfif cgi.remote_addr EQ "127.0.0.1"> 
// run task 
</cfif> 
+2

내가 얼마나 안전 할 지 모르겠다. 나는 이것을 스스로 시도하지 않았지만 [this] (http://www.12robots.com/index.cfm/2008/12/9/Spoofing-CGI-variables--Security-Series-11)에 따르면, 가지 않을 수 있습니다. – Barry

+0

... 거의 내가 생각해내는 것 :-). 또한 @ Bryry 링크에 감사드립니다. – frequent

+0

예약 된 작업으로 만 실행될 예정이라면 cgi.http_referring_agent를 볼 수 있습니다. –

관련 문제