की तयार करण्यासाठी तात्पुरती फाईल लागत नाही, आणि ती वगळल्याने बहुतेक मार्गदर्शकांच्या सूचनेपेक्षा कमी सुधारते। ती जे काढून टाकते ते फाईलचे जीवनचक्र आणि त्याभोवतीची स्वच्छता-शर्यत आहे। ती जे अस्पर्शित ठेवते ते नंतर रहस्य गळवण्याची प्रत्येक संधी आहे। या स्क्रिप्टांमधील अचूकतेची समस्या सहसा अन्यत्र असते, कारण निदान आणि कीची सामग्री वेगवेगळ्या प्रवाहांतून प्रवास करतात।

फाईल ही तुम्ही विचारलेली ती उघडकी कधीच नव्हती

तात्पुरती फाईल ही ठोस जोखीम आहे जेव्हा ती सर्वांना वाचण्यायोग्य असते, जेव्हा ती क्रॅशमधून टिकते, किंवा जेव्हा अपवादानंतर स्वच्छतेची पायरी वगळली जाते। हे खरे आहेत, आणि ते दुरुस्त करण्यासारखे आहेत। ते स्थानिक, दृश्यमान आणि तपासण्यास सोपे देखील आहेत। बदल केवळ दिसण्याचा होता असा निष्कर्ष काढण्यापूर्वी प्रत्येकाचे नाव तुमच्या स्वतःच्या स्क्रिप्टमध्ये घ्या।

अधिक शांत जोखमी खालच्या बाजूला बसतात: डीबगिंगदरम्यान छापलेली की, संपूर्ण निकाल वस्तूला सिरीयलाइझ करणारा अपवाद, कोअर डंप लिहिणारा क्रॅश हँडलर, आधी फाईलचा मार्ग आणि नंतर सामग्री घेणारा लॉग संग्राहक। तात्पुरती फाईल टाळल्याने त्यापैकी एकासाठीही कुठेच होत नाही, आणि उलट विश्वास ठेवणे हा सद्भावनायुक्त पुनर्लेखन रहस्य अधिक उघडे ठेवण्याचा मार्ग आहे। बदलाला श्रेणीतील एक सुधारणा माना, उपाय नाही।

फाईलचे नाव न दिल्यास क्लायंट काय लिहितो

क्लायंटच्या सध्याच्या आवृत्त्या आउटपुट मार्गाशिवाय की आदेश दिल्यास तयार केलेली की मानक आउटपुटवर पाठवतात। हेच नोंदवलेले वर्तन स्मृती-आधारित दृष्टिकोन शक्य करते, आणि ते साधनाला उपकरणाच्या मार्गाकडे वळवण्याच्या जुन्या युक्तीची गरज दूर करते।

import subprocess
proc = subprocess.run(
    ["openvpn", "--genkey", "tls-crypt"],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    check=True,
)
key_material = proc.stdout

आदेश सूची म्हणून द्या। येथे शेल विस्ताराची गरज नाही, आणि शेल सक्षम केल्यास वितर्कांची सीमा तुमच्या नियंत्रणात नसलेल्या अवतरणचिन्हांवर अवलंबून राहिली असती। स्क्रिप्ट तुम्ही अपेक्षेपेक्षा वेगळ्या शोधमार्गाने चालू शकत असल्यास इच्छित कार्यान्वयनीय फाईल निरपेक्ष मार्गाने वापरा।

परतावा-कोड तपासणी अयशस्वी आवाहनानंतर यशाचा मार्ग पुढे जाण्यापासून रोखते। त्याशिवाय, रिकामी बाईट श्रेणी पुढे वहाऊ शकते आणि खूप उशिरा अपयशी होते, त्या बिंदूवर जेथे की वापरली जाते आणि त्रुटी संदेश आता निर्मितीचा उल्लेखही करत नाही।

दोन प्रवाह, दोन अर्थ

मानक आउटपुट की वाहते। मानक त्रुटी साधन तुम्हाला जे सांगू इच्छिते ते सर्व वाहते, संरचना, आवृत्ती आणि कीच्या प्रकाराबद्दलच्या इशाऱ्यांसह। दोन्हींना एका बफरमध्ये वळवणे ही ती चूक आहे जी विश्वासार्ह दिसणारी की तिच्या मधोमध शिवलेल्या वाक्यासह तयार करते।

अपयशाचा मार्गही वेगळा ठेवा। आवाहन अयशस्वी झाल्यास, अयशस्वी झालेला आदेश आणि निर्गमन स्थिती नोंदवा, आणि नंतर मानक त्रुटीचा कोणताही भाग दाखवणे सुरक्षित आहे का हे सज्ञानपणे ठरवा। संपूर्ण निकाल वस्तू लॉगमध्ये ओतणे हा नेहमीचा शॉर्टकट आहे, आणि तो की सोबत नेऊ शकतो।

बाईनरीसाठी सुरक्षित वाचन महत्त्वाचे आहे जर तुम्ही नंतर सामग्रीचा हॅश करता किंवा तिची तुलना करता। अनपेक्षित एन्कोडिंगसह मजकूर मोड असा बाईट बदलू शकतो जो कधीही मजकूर होण्यासाठी नव्हता, आणि बदललेली की हातमिळवणी अयशस्वी होईपर्यंत चुकीच्या कीपासून वेगळी ओळखता येत नाही।

तरीही तुम्ही ती साठवत असाल, तर सज्ञानपणे करा

बहुतेक तैनातींना शेवटी की डिस्कवर, गेटवेवर किंवा रहस्य-भांडारात लागते। ती एकदा लिहा, निर्मितीपासूनच प्रतिबंधित परवानग्यांसह, नंतरच्या chmod ऐवजी, आणि लेखन अणु करा जेणेकरून अर्धवट फाईल कधीही सेवा सुरुवातीला वाचते ती फाईल होणार नाही। एकाच निर्देशिकेतील मार्गावरून पुनर्नामकरण सामान्यतः त्यासाठी पुरते। अपयशाच्या शाखेत स्टेजिंग मार्ग काढा, कारण अयशस्वी लेखन हीच लोक विसरतात ती प्रत।

फाईल तयार होताना तिचा मोड सेट करा, आणि निर्देशिकेचा मोडही प्रतिबंधित ठेवा। बॅकअप काम विचार न करता झाडून घेते अशा ठिकाणाखालील कोणताही मार्ग टाळा, कारण रात्रीच्या बॅकअपमधील रहस्य त्या बॅकअपच्या प्रत्येक प्रतीत रहस्य असते। हाच युक्तिवाद इतर सेवा वाचू शकतात अशा सामायिक व्हॉल्यूमलाही लागू होतो।

सामायिक की ही ओळख नाही

ही सामग्री तयार करणे प्रमाणपत्र देते नाही, क्लायंट नोंदवत नाही आणि कोण जोडत आहे हे ठरवत नाही। सामायिक की आधीच एकमेकांवर विश्वास ठेवणाऱ्या पक्षांमधील चॅनेलचे रक्षण करते; ओळख तरीही प्रमाणपत्रातून आणि त्यासमोर बसलेल्या कोणत्याही प्रमाणीकरणातून येते।

कीचे प्रकारही एकमेकांबदल होऊ शकत नाहीत। एका वैशिष्ट्यासाठीची सममित की दुसऱ्यासाठी तयार पर्याय नाही, आणि नव्या आवृत्त्या प्रत्येक टोकाला वेगळ्या फाईलींसह स्वतःचे प्रकार जोडतात। तुमची संरचना प्रत्यक्षात ज्या प्रकाराचे नाव घेते तो तयार करा, आणि नंतर तो ज्या भूमिकेत त्या प्रकाराने परिभाषित केला आहे तिथे वापरा।

फाईलचा आकार पाहण्याऐवजी खऱ्या जोडणीने निकाल तपासा। हातमिळवणी पूर्ण झाली आणि लॉगमध्ये कीचा इशारा दिसला नाही तर निर्मितीचा मार्ग बरोबर आहे; की विलीन झालेल्या प्रवाहामुळे कापली गेली असती तर जोडणी स्क्रिप्टकडे नाही तर समोरच्या पक्षाकडे इशारा करणाऱ्या पद्धतीने अयशस्वी झाली असती।

संबंधित लेख