2011-01-25 5 views
11

यह खोजना मुश्किल था। अगर मेरे पास ओपन सोर्स रेल वेब एप्लिकेशन प्रोजेक्ट है जिसका स्रोत कोड सार्वजनिक रूप से होस्ट किया गया है, जैसे गिटहब पर, क्या उस एप्लिकेशन को सार्वजनिक वेबसाइट पर उत्पादन में चलाने के लिए अस्पष्ट या स्वैप किया जाना चाहिए? मेरी धारणा यह है कि कॉन्फ़िगर/initilizers/secret_token.rb जैसी चीजें, किसी भी प्रमाणीकरण नमक सामग्री, और डेटाबेस लॉगिन जानकारी विकास के रूप में उत्पादन में समान नहीं होनी चाहिए। यह सुनिश्चित करने के लिए अन्य सावधानी बरतनी चाहिए कि उत्पादन साइट सत्रों के साथ झुकाव वाले लोगों के लिए कमजोर नहीं है या कुछ और जिस पर मैं विचार नहीं कर रहा हूं? संवेदनशील सूचना केक्या होगा यदि एक ओपन सोर्स प्रोजेक्ट के लिए रेल परियोजना का कोई भी स्रोत कोड अस्पष्ट होना चाहिए?

उत्तर

13

रेल विशिष्ट सूत्रों का कहना है से बाहर

सफ़ाई संवेदनशील जानकारी:

  • config/environments/*.rb
  • config/initializers/cookie_verification_secret.rb
  • config/initializers/secret_token.rb
  • config/initializers/session_store.rb
  • किसी भी फाइल में इस तरह के config/memcached.yml
  • config/database.yml
  • db/seeds.rb
  • किसी भी रेक कार्य lib/tasks के रूप में, तीसरे पक्ष के पुस्तकालयों का समर्थन करने के लिए जोड़ा।
  • test/fixtures/*

जनरल परिवर्तन

इस सिर्फ इसलिए कि मुझे लगता है कि यह ओपन सोर्स सॉफ्टवेयर आप भी उत्पादन में है कि रिहा लिए ध्यान में रखने की बातें की एक अच्छी सूची है भी शामिल है।

  • पासवर्ड लवण
  • डिफ़ॉल्ट उपयोगकर्ता क्रेडेंशियल या बीज किसी भी बाहरी सर्वर या सेवा
    • डेटाबेस
    • तीसरे पक्ष के API को
    • प्रमाणीकरण जानकारी कोड की आबादी:

      • संवेदनशील जानकारी निकालें
      • eCommerse समाधान
    • किसी भी वरीयता प्राप्त डेटा है कि संभावित कारनामों के लिए
  • टेस्ट कोड तरह से व्यापार रहस्य का प्रचार करेंगे। अगर वे आपके कोड में हैं और आपका कोड जनता के लिए उपलब्ध है, तो लोग उन्हें ढूंढेंगे और जानेंगे कि आपकी साइट को कैसे समझौता करना है।
  • कोड को साफ करें। कोड आपकी साइट के लिए प्रचार का एक रूप है; यह कई चीजों में से एक है जो आपकी साइट/कंपनी का प्रतिनिधित्व करेगा। सुनिश्चित करें कि आप विनोदी या निराशा से लिखे गए चर/फ़ंक्शन नाम/त्रुटि संदेश/बीजित डेटा/आदि को बदलते हैं लेकिन यह जनता के लिए बुरा लगेगा।
  • प्रोजेक्ट में सक्रिय रूप से अपने एन्हांसमेंट्स और बग फिक्स का योगदान करते हैं और फिक्स/एन्हांसमेंट के लिए बाहरी अनुरोधों का जवाब देते हैं या उन लोगों के लिए अनुरोध भी खींचते हैं जिन्होंने स्वयं को हल किया है। यह परियोजना को सक्रिय रखता है और प्रचार कोण के साथ भी मदद करता है।
  • सुनिश्चित करें कि आप क्रेडिट देते हैं जहां क्रेडिट देय है। अब जब आपका कोड सार्वजनिक है, तो लोगों को पता चलेगा कि आपने तीसरे पक्ष के कोड/पुस्तकालयों का उपयोग किया है या नहीं। यदि ऐसा कोड उनके लाइसेंस समझौते में एट्रिब्यूशन क्लॉज के साथ आया है, तो सुनिश्चित करें कि आपकी परियोजना उन समझौतों का अनुपालन करती है।
+0

धन्यवाद, लेकिन मैं वास्तव में अधिक रेल बारीकियों है कि मैं के बारे में पता नहीं हो सकता है, जिसमें छोड़ने संभावना है, सुरक्षा समस्याओं के कारण config में के रूप में होता रहा हूँ/initilizers/secret_token.rb – re5et

+0

@ re5et: के लिए रेल फ़ाइलों की एक सूची जोड़ी तुम भी। :) – Shaun

1

शॉन द्वारा पिछला जवाब बहुत गहन है।

इसके अतिरिक्त मैं संवेदनशील जानकारी वाले फ़ाइलों को करने से बचने के लिए अपने लाभ के लिए .gitignore का उपयोग करने की अनुशंसा करना चाहता हूं।

एपीआई कुंजी या पासवर्ड इत्यादि वाली कोई भी फ़ाइल .gitignore में होनी चाहिए। आम तौर पर इस में शामिल हैं:

database.yml 
log/* 
tmp/* 

आप कोड फाइलों में स्थिरांक करने के लिए सौंपा API कुंजियां है, तो मैं एक site.yml फ़ाइल में सभी API कुंजियां, पासवर्ड, आदि डालने की सलाह देते हैं। फिर इस फ़ाइल को .gitignore में जोड़ें और इस फ़ाइल को निरंतर में पार्स करने के लिए प्रारंभकर्ता जोड़ें। गुप्त डेटा तक पहुंचने के लिए उस निरंतर उपयोग करें।

उदाहरण के लिए:

config/site.yml:

hoptoad_api_key: ABCDEF1234567890 

config/प्रारंभकर्ता/01_site.rb

SITE = HashWithIndifferentAccess.new(YAML.load(File.open(File.join(Rails.root, 'config', 'site.yml')))) 

config/प्रारंभकर्ता/hoptoad.rb

HoptoadNotifier.configure do |config| 
    config.api_key = SITE['hoptoad_api_key'] 
end 

ध्यान दें कि प्रारंभिक ers वर्णानुक्रम में चलाए जाते हैं। यदि आपको अन्य शुरुआती क्षेत्रों में SITE स्थिरता की आवश्यकता है, तो उस फ़ाइल को नामित करना सुनिश्चित करें जो कॉन्फ़िगरेशन को एक अग्रणी संख्या के साथ पढ़ता है ताकि यह पहले चलाया जा सके।

अधिक उपयोगकर्ता एक खुला स्रोत परियोजना के लिए अनुकूल होने के लिए, आप उदाहरण के साथ एक database.yml.sample और site.yml.sample फ़ाइल को शामिल और/या अपने README में आवश्यक विन्यास की व्याख्या करनी चाहिए।

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