2010-02-08 16 views
5

के बारे में कुछ प्रश्न हैं मैंने कुछ वेब प्रोग्रामिंग (PHP और MySQL का उपयोग करके) किया है, लेकिन पैमाने पर बहुत बड़ा नहीं है। मैं इस बारे में सोच रहा हूं कि कोई सोशल नेटवर्किंग साइट कैसे बनायेगा और मैं कुछ समस्याओं में भाग गया हूं।वेब विकास (PHP और MySQL)

  • आप सुरक्षित रूप से और सुरक्षित रूप से MySQL में पासवर्ड कैसे संग्रहीत करेंगे? आप किस प्रकार की एन्क्रिप्शन का उपयोग करेंगे?
  • यदि उपयोगकर्ताओं को चित्र अपलोड करने की अनुमति थी, तो क्या उन्हें डेटाबेस में स्टोर करना बेहतर होगा या उन्हें सीधे सर्वर पर अपलोड करना बेहतर होगा?
  • क्या ओपन सोर्स वेब एप्लिकेशन (जैसे वर्डप्रेस) क्या आप अनुशंसा करेंगे कि मैं पढ़ूं और पढ़ूं (अधिमानतः कुछ सरल लेकिन अच्छी तरह लिखित)?

कक्षा में पढ़ाया गया या किताबों में लिखे गए कुछ भी वास्तविक उत्पादन कोड में अच्छी तरह से अनुवाद नहीं करते हैं। वे बस बहुत ही बुनियादी उदाहरणों की तरह लगते हैं।

धन्यवाद!

उत्तर

3

पासवर्ड संग्रहण के संबंध में: सुरक्षा के लिए एक तरफा नमकीन हैशिंग का उपयोग करें। Here's an article on why

0

पासवर्ड भंडारण के लिए, मैं नमक के साथ एमडी 5 का उपयोग करने का सुझाव देता हूं। एमडी 5 डिक्रिप्ट करना असंभव है, लेकिन इंद्रधनुष तालिकाओं का उपयोग करके क्रैक करना संभव है। उदाहरण के लिए: Here is a MD5 lookup site I've coded

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

+1

एमडी 5 वास्तव में आजकल टूटा हुआ माना जाता है। इसका बिल्कुल उपयोग न करें। –

+2

वास्तव में? इसे तोड़ें: fb922e006b2bde97591200f956bb9e33 – Rob

2
  1. नमकीन हैश स्टोर करें। मैं व्यक्तिगत रूप से एमडी 5 से दूर चलेगा और इसके बजाए शा जैसे कुछ इस्तेमाल करूँगा। sha1 + नमक थोड़ी देर के लिए बाहर रखेगा =]

  2. यदि आप छवियों को डीबी में ब्लब्स के रूप में संग्रहीत करते हैं, तो संभवतः भविष्य में उन्हें भविष्य में एक आसान समय मिलेगा (डब्ल्यू/डीबी के साथ, उन्हें लाने , आदि)। लेकिन वास्तव में, वे फ़ाइल सिस्टम पर भी बहुत तेज़ हो जाएंगे, लेकिन मैं उन्हें डेटाबेस में पसंद करूंगा क्योंकि मेरे पास बहुत सारे कोड हैं जो डब्ल्यू/डीबी इंटरफेस करते हैं और मैं उस क्षेत्र में काम कर रहा हूं। यह आप पर निर्भर है।

  3. मुझे यकीन नहीं है कि वर्डप्रेस आपको सोशल नेटवर्किंग साइट बनाने में मदद करेगा ... लेकिन यह अभी भी दूसरे कोड को पढ़ने के लिए अच्छा है। मैं अपने दिमाग को बड़े पैमाने पर सोचने के लिए आर्किटेक्चर पर अमेज़ॅन पर कुछ किताबें देखता हूं। इसके अलावा, कुछ डिज़ाइन पैटर्न पुस्तकें देखें।

मैं ज़ेंड फ्रेमवर्क या केकपीएचपी जैसे कुछ भी देखता हूं। केक शायद आपको ऊपर ले जाएगा और तेजी से दौड़ रहा है, लेकिन मैं ज़ेंड पसंद करता हूं, क्योंकि यह बहुत शक्तिशाली है और आपको एक निश्चित शैली को कोड करने के लिए मजबूर नहीं करता है। केकेपीएचपी PHP के लिए रेल की तरह है।

तुम भी सुरक्षा पर सभ्य प्राप्त करने के लिए चाहता हूँ, दोनों सर्वर और ग्राहक की ओर, सत्र अपहरण, एसक्यूएल इंजेक्शन, XSS, जानवर बल प्रयास, दूरस्थ भी शामिल है, अपलोड की गई फ़ाइल कारनामे, आदि

की तरह सामान के लिए देख रहा है सामाजिक साइटें क्रैकर्स को कई हमले वैक्टर प्रदान करती हैं।

संसाधन:

+4

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

+0

यह उचित है - लेकिन यही कारण है कि आपके पास टेबल हैं - आप भी ऐसी वस्तुओं के लिए एक अलग डीबी प्राप्त कर सकते हैं और कुछ दिनचर्या जो वास्तव में तेजी से पहुंच के लिए memcache में चित्र/अवतार जैसी चीज़ें छड़ी करती हैं। मुझे यकीन नहीं है कि मुझे लगता है कि फाइल सिस्टम में छवियों को एक बेहतर विचार है। –

+0

एक छोटी सी प्रणाली के लिए, आपके डीबी में छवियों को संग्रहित करना ठीक है। जब तक आपका डेटासेट कई जीबी में बढ़ गया है, तो आप अपने पिछले डिजाइन निर्णय को पसंद नहीं करेंगे। यह चर्चा मृतकों के लिए की गई है, वही गलती दोबारा दोहराएं मत। – Jacco

1

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

क्या आपके पास डेटाबेस में छवियों को संग्रहीत करने में कोई अजीब लग रहा है? MySQL डेटाबेस बहुत तेजी से बढ़ सकता है, और आपको हमेशा छवियों को दिखाने के लिए एक PHP स्क्रिप्ट की आवश्यकता होगी, जिसका अर्थ है कि यह आपके सर्वर को धीमा कर देता है।


पासवर्ड संग्रहण के लिए, दूसरों के उत्तर देने के रूप में नमक का उपयोग करें।


आखिरकार, प्रलेखन के लिए, मुझे वास्तव में यह देखना अच्छा लगता है कि वर्डप्रेस कैसे संरचित है। मैंने अपने स्रोत कोड को देखने और इसके दस्तावेज़ों को पढ़ने में घंटों बिताए हैं। यह किसी भी वेबसाइट को व्यवस्थित करने का एक बहुत अच्छा उदाहरण है।

1
  1. पासवर्ड में हैश फ़ंक्शन लागू करें (जैसे sha1 या md5)। फिर md5 ("social") या कुछ के पहले 5 वर्णों को ले कर इसे "नमक" जोड़ें। यह आपके ऊपर है, लेकिन इसका इरादा है ताकि यदि किसी हैकर को आपके डेटाबेस तक पहुंच प्राप्त हो, तो वह इंद्रधनुष तालिका के माध्यम से अपने हैंड किए गए पासवर्ड नहीं चला पाएगा और वास्तविक पासवर्ड प्राप्त नहीं कर पाएगा।
  2. मैं ऐसी वेबसाइट चला रहा हूं जो उपयोगकर्ताओं को चित्र अपलोड करने की अनुमति दे। चित्रों को व्यवस्थित रखने के लिए डिब्बे (यानी प्रति बिन 1,000 चित्र) में व्यवस्थित किया जाता है (और आप समस्याओं में भाग लेने से पहले प्रति फ़ोल्डर में इतनी सारी फाइलें प्राप्त कर सकते हैं)। चित्रों का स्थान डेटाबेस में और साथ ही अन्य जानकारी (जैसे चित्र आईडी, फ़ाइल एक्सटेंशन, बिन स्थान इत्यादि) में संग्रहीत किया जाता है। डेटाबेस में एक और तालिका चित्र आईडी को उपयोगकर्ता को जोड़ती है। साथ ही, इसके अपलोड की गई एक बार चित्र के फ़ाइल नाम की तरह

    {bin}/{userId}_{pictureId}_{token}_{variant}.{fileExt}

  3. वेब अनुप्रयोगों के बारे में सुनिश्चित नहीं हैं कि कुछ है, लेकिन आप निश्चित रूप से का उपयोग करना चाहिए कुछ में निर्मित इस तरह के पीडीओ डेटाबेस अमूर्त परत के रूप में पीएचपी कक्षाएं।

+0

एमडी 5 और एसएचए 1 आजकल सुरक्षित नहीं हैं। SHA256 या बेहतर अभी तक BCRYPT – Jacco

+0

का उपयोग करें मुझे नहीं लगता कि इससे कोई फर्क नहीं पड़ता क्योंकि आप पासवर्ड को सलाम कर रहे हैं? यह एक शुद्ध एमडी 5 या एसएचए 1 हैश नहीं होने वाला है – axsuul

0

प्रश्न 3: मैं आधुनिक रेल शैली ढाँचे में से एक अध्ययन के सुझाव है कि (मेरी पसंदीदा Symfony है) के बजाय Wordpress या गैलरी जैसे ऐप्लिकेशन। वे दोनों उत्कृष्ट हैं, लेकिन वे सरल हैक्स से विकसित हुए हैं और यदि मैं खरोंच से शुरू कर रहा था तो मैं कुछ भी शुरू नहीं करूँगा।

इसके अलावा, प्रश्न 2 के लिए, मुझे डेटाबेस में बाइनरी ब्लब्स से नफरत है। फाइल सिस्टम उस के लिए बहुत अच्छा काम करते हैं।

और प्रश्न 1: एक तरफा हैश, जैसा कि अन्य ने कहा है। MySQL का पासवर्ड() फ़ंक्शन शायद ठीक है।

0

इन सभी सवालों का जवाब पहले दिया गया है।

कैसे आप सुरक्षित रूप से और सुरक्षित रूप से MySQL में पासवर्ड संग्रहीत हैं? आप किस प्रकार की एन्क्रिप्शन का उपयोग करेंगे?

देखें https://stackoverflow.com/search?q=password+hash+database+php

उन चित्रों को अपलोड करने के लिए अनुमति दी गई थी, तो उन्हें डेटाबेस में स्टोर करने के लिए या उन्हें सर्वर से सीधे अपलोड कर दिया है बेहतर होगा?

https://stackoverflow.com/search?q=store+images+database+php

देख रहे हैं वही खुला (जैसे वर्डप्रेस के रूप में) स्रोत वेब अनुप्रयोगों की सलाह देंगे मैंने पढ़ा है और अध्ययन (अधिमानतः कुछ सरल लेकिन अच्छी तरह से लिखा जाता है)?

https://stackoverflow.com/search?q=social+network+php

देखें तुम भी खाते है कि चल रहा है और एक सामाजिक नेटवर्क साइट के प्रबंधन के बस कोडिंग से अधिक है में रखना चाहिए। क्या आप वाकई स्क्रैच से एक बनाना चाहते हैं? गौर करें कि क्या आप Ning जैसे कुछ के साथ समान रूप से खुश होंगे, जहां हर कोई प्रोग्रामिंग के बिना अपना स्वयं का समुदाय शुरू कर सकता है?