2011-12-01 12 views
7

मान लें कि मैं अपने कार्यक्रम में कहीं एक महत्वपूर्ण पासवर्ड है और मैं इसे सुरक्षित बनाने के लिए चाहते हैं, उदाहरण के लिए:क्रैकिंग से 'plaintext' स्ट्रिंग को सुरक्षित बनाना?

ftp.password := 'mypassword'; 

बारे में 8 साल पहले मैं मनोरंजन के लिए 'दरार सामान' के लिए उपयोग करते हैं, तो मैं मुझे उस तरह सामान पाया OllyDbg का उपयोग करके काफी आसानी से।

मुझे यह जानने की ज़रूरत है कि क्या यह चीज़ प्राइइंग आंखों से सुरक्षित बनाने का कोई तरीका है। मैंने सीधे घटक में पासवर्ड संग्रहीत करने के बारे में सोचा, लेकिन फिर यह नहीं पता कि यह कोई अच्छा काम करेगा या नहीं।

+4

पासवर्ड स्टोर न करें। हैश करें और फिर पासवर्ड स्टोर करें। –

+2

@ डेविड हेफ़र्नन - यह काम नहीं करेगा अगर उन पासवर्ड को किसी अन्य ऐप/सेवा (जैसे एक एफ़टीपी सर्वर से कनेक्ट करना) भेजा जाना चाहिए। – crashmstr

+2

@ क्रैश एफटीपी असुरक्षित –

उत्तर

17

बस इसे मत करें। यदि आप पासवर्ड को सुरक्षित रखना चाहते हैं, तो इसे प्रोग्राम में न रखें। यदि प्रोग्राम इंटरैक्टिव है तो आप इसके लिए उपयोगकर्ता से पूछ सकते हैं। यदि नहीं, तो प्रोग्राम का उपयोग करने के लिए आपको किसी प्रकार का गैर-पासवर्ड-आधारित प्रमाणीकरण सेट अप करना चाहिए।

आप कार्यक्रम में पासवर्ड को एम्बेड करना आवश्यक है, नियम बहुत सरल है - कभी नहीं किसी को जो कुछ भी ऐसा करने में सक्षम होना चाहिए नहीं है करने के लिए कार्यक्रम पासवर्ड उन्हें करने के लिए अनुमति देता है प्रदान करते हैं।

+0

एमएमएम, शायद अगर मैं प्रोग्राम के लिए उपयोगकर्ता बनाता हूं, तो यह थोड़ा सुरक्षित होगा, भले ही कोई इसे प्राप्त कर ले, फिर भी वे इसके साथ बहुत दूर नहीं जाएंगे। –

2

यहाँ एक ही रास्ता है - यह है कि यह एक हेक्स दर्शक के साथ उत्सुक लोगों से सुरक्षित रखता है, लेकिन निश्चित रूप से कार्यावधि में उन्नत तकनीक के साथ काम नहीं करेगा:

function GetA: string; 
begin 
    Result := #$109#$121#$122; // 'myp' 
end; 

function Getb: string; 
begin 
    Result := #97#$115#$115#$119; // 'assw' 
end; 

function GetC: string; 
begin 
    Result := #$111#$114#$100; // 'ord' 
end; 

procedure TForm1.Whatever; 
begin 
    ftp.Password := GetA + GetB + GetC + GetD; 
end; 

जैसा कि मैंने कहा, यह स्थापित करने के किसी से सुरक्षित नहीं है एक डीबगर के साथ कोड निष्पादन के दौरान एक ब्रेक और ftp.password की स्थापना के बाद स्मृति में निरीक्षण, लेकिन यह एक हेक्स दर्शक से सुरक्षित है। मैं आमतौर पर ftp.password के डिज़ाइनटाइम मान को DoyouthinkImthatstupid? जैसे कुछ लोगों को आजमाने की कोशिश करता हूं।

4

जबकि मैं पूरी तरह से डेविड श्वार्टज़ से सहमत हूं (आपको सीधे किसी प्रोग्राम के अंदर कोई पासवर्ड एम्बेड नहीं करना चाहिए), इसे किसी भी व्यक्ति को ढूंढने के लिए बनाना संभव है।

एक टुकड़े में स्ट्रिंग को परिभाषित करने के बजाय, आप स्ट्रिंग को प्रक्रियात्मक रूप से बना सकते हैं। इस तरह पूरी तरह से स्ट्रिंग को आपके निष्पादन योग्य के अंदर एक टुकड़े में कभी भी संग्रहीत नहीं किया जाता है, जिससे इसे ढूंढना अधिक कठिन हो जाता है।

+0

यह एक उचित जवाब है, अच्छा विचार है। –

5

जबकि उत्तर जो आपको अभी नहीं करना चाहिए वह सही है, व्यावहारिक रूप से ऐसे अवसर होते हैं जब वास्तविक दुनिया आपको हाथ देती है। एक या दो उदाहरणों में जहां मुझे कुछ दृष्टिकोण में मजबूर किया गया है, जिसका उपयोग मैंने किया है, एक ऐसा फ़ंक्शन कोड करना है जो कुछ गणितीय सूत्र का उपयोग करके स्क्रैच से ज्ञात पासवर्ड उत्पन्न करेगा - उदाहरण के लिए अंग्रेजी शब्दों का पहला अक्षर रिवर्स ऑर्डर में पीआई के पहले 8 अंक। बेशक यह अभी भी क्रैक किया जा सकता है, लेकिन यह कार्य को थोड़ा कठिन बनाता है और आकस्मिक ब्राउज़र को हतोत्साहित करना चाहिए।

बेशक

यदि आप वास्तव में FTP (नहीं SFTP) तुम वैसे भी नेटवर्क पर सादे पाठ में पासवर्ड गुजर रहे हैं का उपयोग कर रहे हैं। मैं शुरुआत में उससे अधिक चिंतित हूं - यह एक बहुत अधिक स्पष्ट हमले वेक्टर है।

+0

+1 मैं अपना डीबगर खोलने से पहले नेटवर्क ट्रैफिक को स्नीफ कर दूंगा। यह बस आसान है। –

3

यह केवल एक समस्या नहीं है जो क्रिप्टोग्राफी हल कर सकती है। इस मान को सुरक्षित रखने का एकमात्र तरीका है अपने ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए उपयोगकर्ता पहुंच नियंत्रण पर भरोसा करना। सुनिश्चित करें कि फ़ाइल की अनुमति जितनी अधिक हो सके सीमित है। chown user:user file फिर chmod 400 file

1

शायद आप स्ट्रिंग को एन्क्रिप्ट कर सकते हैं, और इसे पढ़ते समय इसे वापस डिक्रिप्ट कर सकते हैं?

लेकिन फिर भी, जैसा कि अन्य ने कहा है, एप्लिकेशन में आंतरिक रूप से पासवर्ड संग्रहीत करना एक अच्छा विचार नहीं है।

भले ही आपने स्ट्रिंग को एन्कोड किया या एन्क्रिप्ट किया हो, यह निर्धारित लोगों से सुरक्षित नहीं होगा।

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