2009-05-22 8 views
6

सीएफसी की महान सुविधाओं में से एक सीधी .cfm पेज और फ्लेक्स ऐप्स दोनों के लिए कोड का पुन: उपयोग करने की क्षमता है।स्नूपर्स से सीएफसी में एक्सेस = "रिमोट" फ़ंक्शंस को कैसे सुरक्षित किया जाए?

एक ऐसा ऐप जिसे मैंने डिलीप्लेड किया है, उसकी फ्लेक्स क्षमताओं के लिए फ्लेक्स का उपयोग करता है और सीएफसी में 'getResults()' फ़ंक्शन तक पहुंच की आवश्यकता होती है।

इस सामग्री के सभी एक प्रमाणीकरण तंत्र के पीछे है, लेकिन सीएफसी के बाद से अपने आप में एक wsdl अनुरोध करने के लिए खुल जाएगा:

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

और वास्तव में ब्राउज़र यदि करने के लिए परिणाम देंगी URL क्वेरी ठीक से तैयार किया जाता है:

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

सीएफसी को सीधे पहुंच से बचाने के लिए लोगों ने कौन सी तकनीकों का उपयोग किया है, अनुरोध सीधे सीएफएमएल प्रोसेसर से या फ्लेक्स रिमोटिंग से आ रहा है?

उत्तर

4

आप अनुरोध के कहां से आ रहे हैं यह जांचने के लिए आप कुछ सीजीआई स्कोप चर का उपयोग कर सकते हैं।

अर्थात्: CGI.REMOTE_HOST, CGI.REMOTE_ADDR

तो, आप शायद एक नया कार्य एक पहुँच = "सार्वजनिक" संपत्ति है जिसके लिए मान्य मानों की सूची के खिलाफ उन चरों के मान की जाँच करता है के साथ निर्माण है कि आपके द्वारा सर्वर। यदि यह सत्य लौटाता है, तो आप अनुरोध निष्पादित करेंगे और यदि यह झूठा रिटर्न देता है, तो आप किसी प्रकार की त्रुटि को फेंक देंगे/वापस कर देंगे।

+0

आप शायद किसी प्रकार की क्रेडेंशियल्स के साथ अनुरोध को सुरक्षित कर सकते हैं ताकि परेशानी की एक और पतली दीवार जोड़ सके। –

+0

मुझे लगता है कि यह जाने का रास्ता है। मैं यह जांचने के लिए CGI.SCRIPT_NAME का उपयोग कर रहा हूं कि ब्राउज़र सीधे सीएफसी तक पहुंच रहा है या नहीं। अगर वे हैं, तो वे बूट प्राप्त करते हैं। –

0

हालांकि थोड़ा सा पुराना, मैंने सामान्य रूप से सीएफ ऐप्स को सुरक्षित करने पर बिल पर्ससेल के नोट्स खोद दिए। सीएफसी की सुरक्षा का उल्लेख किया गया है।

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

3

मैं अपने application.cfc फाइल करने के लिए एक OnRequestStart हैंडलर जोड़ने का सुझाव देते हैं, और एक चेक वहाँ ... क्या है कि जांच है अपने वर्तमान मॉडल पर निर्भर करता है करते हैं, लेकिन कुछ अच्छे सुझाव cgi जांच करने के लिए किया जाएगा .remote_user (अगर प्रमाणित है) या शायद सत्र के दायरे में कुछ संग्रहीत कर रहा है? या तो XML या Struct - - और एक निश्चित नोड/ऑब्जेक्ट नाम की आवश्यकता है कि XML या Struct में उपस्थित होने के लिए

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

मुझे लगता है कि मैं विशिष्ट सीएफसी को किसी ऐसे व्यक्ति द्वारा छेड़छाड़ करने से बचाने की भी कोशिश कर रहा हूं जो पहले ही प्रमाणीकृत/अधिकृत है –

1

एक बात मैं करना पसंद प्रत्येक विधि के लिए केवल एक ही तर्क है।

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

    <cfreturn myXML /> 
</cfif> 

2

नई भूमिकाओं विशेषता का उपयोग कर के बारे में क्या? आपकी साइट पर आने वाले प्रत्येक व्यक्ति को स्वचालित रूप से cflogin भूमिकाएं = "सार्वजनिक" मिलती है।

0

बस, जबकि कुछ और की तलाश में इस सवाल में आए और सोचा था कि मैं अपने 2p जोड़ेंगे:

मैं एक दूरस्थ सीएफसी कि मैं केवल 'व्यवस्थापक' उपयोगकर्ताओं में लॉग इन करने के लिए उपलब्ध करना चाहते हैं का उपयोग करके ऐप्लिकेशन की है। इस मामले में, CGI परिवर्तनीय चेक अभी भी ऐप के अतिथि उपयोगकर्ताओं के लिए पास होगा।

जब कोई व्यवस्थापक उपयोगकर्ता लॉग इन करता है, तो मैं उनके सत्र आईडी का एक हैश लेता हूं और लॉगिन समय और डेटाबेस और सत्र स्कोप में स्टोर करता हूं। जब मैं रिमोट सीएफसी हिट करता हूं, तो मैं हैश को चर के रूप में पास करता हूं और इसे व्यवस्थापक उपयोगकर्ताओं के डेटाबेस के विरुद्ध जांचता हूं।

यदि कोई रिकॉर्ड वापस आता है, तो मुझे पता है कि वर्तमान उपयोगकर्ता व्यवस्थापक है और मैं अनुरोध जारी रखता हूं।

संबंधित मुद्दे