2011-06-07 8 views
5

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

मुझे लगता है कि कम समय में पाया गया एकमात्र नुकसान यह है कि यह पृष्ठ पर 2 बाहरी स्टाइल शीट और 1 स्क्रिप्ट टैग जोड़ता है।

इतने कम में

:

फायदे और coldfusion में फार्म खत्म हो CFFORM का उपयोग करने का नुकसान क्या हैं?

+0

मुझे यह जानकर उत्सुकता होगी कि एक्सएसएस सुरक्षा क्या आपको विश्वास है कि आप सीएफफॉर्म से प्राप्त कर रहे हैं। मैं किसी के बारे में नहीं जानता। –

+0

' 'लीड यहां से समस्याओं से नहीं मिल सकता है। मुझे हमेशा लगा कि इस के पीछे कोड खुले खुले होना चाहिए ताकि लोग इसे स्वतंत्र रूप से विकसित कर सकें। एक संभावित दृष्टिकोण एक्सएमएल स्किनेबल रूपों का उपयोग कर रहा है: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7b0e.html, लेकिन मुझे हमेशा लगा है कि एक्सएसएल किसी समस्या की तलाश में एक समाधान है। – orangepips

+0

@ जेसन AFAIK सभी मूल्य = "" cfinput/cfselect/cftextarea में xmlFormat() 'ed स्वचालित रूप से हैं, यह सब कुछ है। – Henry

उत्तर

9

मैं अपने फॉर्म के आस-पास अपना स्वयं का जेएस लिखना पसंद करता हूं। मैंने दिन में सीएफओफ़ॉर्म के साथ शुरुआत की, लेकिन अंततः सीएफएफएल को संभालने में सक्षम होने की तुलना में अधिक मजबूत चीजें (सत्यापन, आदि) करना चाहता था। इससे मुझे जेएस सीखने के लिए मजबूर किया गया, और मैं अपने स्वयं के जेएस लिखने से बहुत खुश हूं।

तो मुझे लगता है कि मैं कहूंगा कि एक बड़ी कमी यह है कि आप सीएफएफफ़ को संभाल सकते हैं। आपकी स्थिति के आधार पर, यह ठीक हो सकता है।

एक और कमी जो मैंने बहुत समय पहले (जो निष्पक्ष होना है, तब से संबोधित किया जा सकता है), यह है कि सीएफएफएल द्वारा उत्पन्न जेएस मेरे हाथ से लिखे जेएस के साथ संघर्ष करेगा या हस्तक्षेप करेगा।

यह निश्चित रूप से वरीयता के लिए नीचे आ जाएगा। यह सीएफओफ़ॉर्म या नियमित रूपों का उपयोग करने के लिए न तो "सही" और न ही "गलत" है। मेरे लिए, मैं मैन्युअल रूप से करने के लिए जो कुछ भी कुशलतापूर्वक करने की आवश्यकता है, करने में सक्षम होना पसंद करता हूं, क्योंकि कोई प्रतिबंध/सीमाएं नहीं हैं।

+0

मैं सामने के अंत में फॉर्म को सत्यापित करने के लिए cfinput का उपयोग नहीं कर रहा हूं, मैं बैकएंड को और अधिक देख रहा हूं। जब भी मैं कुछ "" /> "मूल इनपुट रूप में यह इनपुट समाप्त कर देगा और जेएस चलाएगा। मुझे इसे रोकने के लिए HTMLEditFormat का उपयोग करना होगा। हालांकि अगर मैं cfinput का उपयोग करता हूं तो यह HTMLEditFormat जैसे प्रतीकों को परिवर्तित करेगा, लेकिन मुझे वास्तव में HTMLEditFormat – corymathews

+2

I ' डी अभी भी HTMLEditFormat() को जोड़ना पसंद करता है, जहां मैं इसे जोड़ना चाहता हूं। इस तरह अगर इसे कभी भी उपयोग करने की ज़रूरत नहीं है, तो मुझे कामकाज के साथ आने की ज़रूरत नहीं है। लेकिन यह मैं हूं। हेनरी ने कहा उनकी प्रतिक्रिया में (और मैं paraphrasing हूँ), अगर यह आपके लिए काम करता है, तो इसका इस्तेमाल करें। अधिकांश भाग के लिए, "फायदे" या "नुकसान" व्यक्तिपरक होने जा रहे हैं। – charliegriefer

+0

मैं क्लाइंट के संबंध में इस पर चार्ली के साथ हूं साइड। मेरे पास कई मौके हैं जहां सीएफओआरएम की जावास्क्रिप्ट अन्य स्क्रिप्ट फ़ंक्शंस के साथ समस्याएं पैदा कर रही है। मुझे एडोब के आग्रह के साथ भी एक समस्या है जिसमें आपको एक चुनिंदा बॉक्स बनाने के लिए cfform.js को हैक करना है। ऐसा कहा जा रहा है कि, चालू करने के साथ CFFORM का उपयोग करेंगे सर्वर मान्य करें अगर यह प्रकृति में बहुत बुनियादी है तो सर्वर साइड सत्यापन के साथ जल्दी से निपटने के लिए विशेषता। –

5

मेरे पास <cfform> & <cfinput> के साथ प्यार-नफरत संबंध है।

ही XSS संरक्षण कि CFFORM प्रदान करता है, बस इतना की तरह नियमित रूप से में htmlEditFormat() मान के आस = "" लपेट:

<input name="x" value="#htmlEditFormat(x)#"> 

भी बेहतर XSS सुरक्षा के लिए, OWASP Enterprise Security API का उपयोग (.jar एक में शामिल सीएफ 9 नवीनतम हॉटफिक्स के)

मुझे प्यार है कि मैं जेएस लिखने के बिना आसानी से AJAXकृत फ़ॉर्म कैसे कर सकता हूं, लेकिन मुझे नफरत है कि यह कितनी बदसूरत जावास्क्रिप्ट उत्पन्न करता है और बहुत सी चीजों के लिए जेएस और सीएसएस फाइलों को लोड करता है। तो मैंने केवल सार्वजनिक साइट्स (प्रदर्शन समस्या) के लिए आंतरिक साइटों के लिए cfform का उपयोग करने का निर्णय लिया है।

अन्य तो ajax सुविधाओं, checked विशेषता है कि सीएफ बूलियन स्वीकार करता है और क्वेरी वस्तु के साथ चयन को आबाद करने सुविधाओं है कि cfinput और cfselect प्रदान जो काफी उपयोगी हो सकते हैं।

सही नौकरी के लिए सही उपकरण का उपयोग करें। यदि आपको <cfform> की सुविधा मिली है, तो इसका उपयोग करें। बस इसकी सीमाओं को जानें, और अपने लिए निर्णय लें।

+1

आप ' 'का भी उपयोग कर सकते हैं। Http://stackoverflow.com/questions/3640156/is-xmlformat-always-better-than-htmleditformat –

+0

@Ciaran हां, लेकिन 'htmlEditFormat() 'cfinput का उपयोग करता है। – Henry

1

मैंने लंबे समय तक कोल्डफ्यूजन के सीएफआई इनपुट का उपयोग नहीं किया है। मैं jQuery सत्यापन प्लगइन का उपयोग कर रहा हूं ताकि मैं अन्य चीजों पर सत्यापन कर सकूं:

  • तत्व दृश्यमान है? (यानी, यदि आवश्यक नहीं है तो एक सेक्शन छुपाएं, लेकिन अगर नहीं दिखाया गया तो आवश्यकता को खत्म करें।)
  • चेकबॉक्स चेक किया गया है?(यानी, आपने "अन्य" चेक किया है, अब भरने के लिए रिक्त आवश्यक है।)
  • क्या यह वैध दिनांक/समय मान है? (यानी, मैं इस में सहायता के लिए डेटजेएस लाइब्रेरी का उपयोग करता हूं)
  • यह निर्धारित करने के लिए AJAX क्वेरी निष्पादित करें कि उपयोगकर्ता नाम अद्वितीय है
  • क्या यूआरएल मान्य है?
  • बातें
  • का एक संयोजन पर आधारित password2 साथ password1 तुलना
  • कस्टम नियम

अधिकांश सत्यापन नियमों वर्ग पैरामीटर के लिए इनलाइन जोड़ा जा सकता है:

<input type="text" name="Name" class="required"> 
<input type="text" name="Birthdate" class="required date"> 
<input type="text" name="Email" class="required email"> 
<input type="text" name="Website" class="url"> 

मैं jQuery का उपयोग करने के क्योंकि कभी-कभी पसंद करते हैं मुझे इस तर्क को गैर-कोल्डफ्यूजन आधारित रूप में जोड़ने की आवश्यकता है और मुझे इस तथ्य की चिंता करने की आवश्यकता नहीं है कि CFInput एक कोल्डफ्यूजन-केवल टैग है। लगभग 14 वर्षों के लिए

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

+0

जब आप jQuery के साथ कोल्डफ्यूजन जोड़े जाते हैं, तो आप सभी नरक ढीले हो जाते हैं, जो पूरी तरह से कमाल है! आप jQuery के साथ कुल नियंत्रण मिला है। –

3

मैं ColdFusion उपयोग किया गया है:

यहाँ jQuery मान्यकरण पुस्तकालय के बारे में अधिक जानकारी के साथ एक लिंक है। कारण यह है कि सीएफ ऐसा किक-गधा उत्पाद है जो नए उपयोगकर्ताओं को बहुत अधिक समझ के साथ जल्दी से काम करने की शक्ति देता है और यह रॉकेट वैज्ञानिकों को वास्तव में शक्तिशाली और सुरक्षित अनुप्रयोगों को जल्दी से बनाने में सक्षम बनाता है।

CFFFORM, CFINPUT, CFLAYOUT, CFPOD टैग नए उपयोगकर्ताओं के लिए बनाए गए हैं। असल में, वे प्रशिक्षण पहियों हैं। यदि आप वेब विकास के लिए नए हैं, तो आपको यह टैग एक प्रयास देना चाहिए। जैसे-जैसे आप अनुभव प्राप्त करते हैं, आप इन टैग को छोड़ना और अधिक मजबूत अनुप्रयोग बनाने के लिए अन्य तकनीकों पर जाना चाहते हैं।

इन टैग्स में कुछ भी गलत नहीं है, जैसे प्रशिक्षण पहियों के साथ कुछ भी गलत नहीं है। आपको सिर्फ यह जानने की जरूरत है कि प्रत्येक नौकरी के लिए एक उपयुक्त उपकरण है। असल में, प्रत्येक नौकरी के लिए बहुत सारे उचित उपकरण हैं।

वर्तमान में, मैं एक कोल्डफ्यूजन 9/jQuery/SQL सर्वर इंट्रानेट विकसित कर रहा हूं जो बाहरी वेब साइट बनाता है। मैं इसे एक फॉर्म टैग का उपयोग किए बिना कर रहा हूं। और, मैं इसे पूरी तरह से CFSCRIPT में कर रहा हूं। वाह!

jQuery का उपयोग करके, आपको फ़ॉर्मों की आवश्यकता नहीं है। आपको सिर्फ इनपुट की आवश्यकता है। यहां बताया गया है कि मैं CFSCRIPT में इनपुट कैसे बना सकता हूं।

<cfscript> 
Options = ""; 
for (i = 1; i lte 10; i++) { 
    Options = Options & wrapOption("Some choice #i# ", i); 
} 
SelectBox = wrapSelect(Options, "MySelectID"); 
writeOutput(SelectBox); 
SecretDiv = wrapDiv("", "", "MyDivID"); 
writeOutput(SecretDiv); 
</cfscript> 

उपयोगकर्ता परिभाषित एचटीएमएल बनाने के लिए काम करता है मेरी UDF_Library.cfm फ़ाइल में हैं:

// WRAP SELECT 
function wrapSelect(SelectContent, Class, ID) { 
    LOCAL.SelectContent = ARGUMENTS.SelectContent; 
    LOCAL.Properties = ""; 
    // CLASS 
    if (isDefined("ARGUMENTS.Class")) { 
     LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'"; 
    } 
    // ID 
    if (isDefined("ARGUMENTS.ID")) { 
     LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'"; 
    } 
    LOCAL.Item = "<select #LOCAL.Properties#>#LOCAL.SelectContent#</select>"; 
    return LOCAL.Item; 
} 
// WRAP OPTION 
function wrapOption(Content, Value, Selected) { 
    LOCAL.Content = ARGUMENTS.Content; 
    LOCAL.Properties = " value='#ARGUMENTS.Value#'"; 
    // SELECTED 
    if (isDefined("ARGUMENTS.Selected") and (ARGUMENTS.Selected eq "selected")) { 
     LOCAL.Properties = LOCAL.Properties & " selected"; 
    } 
    LOCAL.Item = "<option #LOCAL.Properties#>#LOCAL.Content#</option>"; 
    return LOCAL.Item; 
} 
// CREATE DIV 
function wrapDiv(Content, Class, ID) { 
    LOCAL.Properties = ""; 
    // CLASS 
    if (isDefined("ARGUMENTS.Class")) { 
     LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'"; 
    } 
    // ID 
    if (isDefined("ARGUMENTS.ID")) { 
     LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'"; 
    } 
    LOCAL.Item = "<div #LOCAL.Properties#>#ARGUMENTS.Content#</div>"; 
    return LOCAL.Item; 
} 

मैं jQuery का उपयोग करें और अपने वर्ग या आईडी के आधार पर हर तत्व का संदर्भ लें। आप ऐसा करते हैं, तो आप डेटा प्रत्येक तत्व में एक ajax कॉल करने के लिए इस तरह प्रस्तुत कर सकते हैं:

<script type="text/javascript"> 
$(document).ready(function() { 
$("#MySelectID").change(function() { 
    MyID = $("#MySelectID").val(); 
    $("#MySecretDiv").load("CoolQuery.cfm?UserID"+MyID); 
}); 


}); 
</script> 

बिंदु है, जब तक कि आप CFFORM और CFINPUT उपयोग कर रहे हैं, आप ऐसा नहीं कर सकते सब वास्तव में शक्तिशाली jQuery सामान। लेकिन, आपको शुरू करने के लिए उन टैग की आवश्यकता है।

2012 कोल्डफ्यूजन और jQuery की शक्ति के लिए किक-गधे वर्ष होने वाला है !!!

शुभकामनाएं!

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