सवाल मैं .git निर्देशिका की सेवा से अपाचे को कैसे रोकूं?


मैंने परीक्षण के लिए वेबसाइटों की तैनाती के लिए गिट का उपयोग करना शुरू कर दिया है। मैं apit को .git निर्देशिका सामग्री की सेवा करने से कैसे रोकूं?

मैंने कोशिश की

<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>

बिना सफलता के।

मुझे पता है कि मैं प्रत्येक .git निर्देशिका में एक .htaccess फ़ाइल बना सकता हूं और पहुंच से इनकार कर सकता हूं, लेकिन मुझे कुछ ऐसा चाहिए जो मैं मुख्य कॉन्फ़िगरेशन फ़ाइल में डाल सकता हूं जो इस वैश्विक को सभी वेबसाइटों पर बनाता है।


63
2018-03-31 12:11


मूल


एक बार जब आप निर्देशिका को सेव करने से अपाचे को रोक देते हैं तो आपको "indexIgnore .git" के साथ .git निर्देशिका को छिपाने की आवश्यकता हो सकती है यदि आपके पास आपकी निर्देशिका में इंडेक्स सक्षम हैं। - Ryan


जवाब:


यह काम नहीं कर रहा है क्योंकि आपके पास नियम में 'svn' है और 'git' नहीं है। आपको बस 'git' के साथ 'svn' को प्रतिस्थापित करना है।

<Directorymatch "^/.*/\.git/">
Order deny,allow
Deny from all
</Directorymatch>

46
2018-03-31 12:45



जब मैं एक .htaccess बनाता हूं जिसमें केवल आपका कोड होता है, तो मुझे त्रुटि मिलती है: "<DirectoryMatch यहां अनुमति नहीं है" - Shoan
यह अपाचे conf में होना चाहिए। देख: httpd.apache.org/docs/1.3/mod/core.html#directorymatch - sinping
सबसे सरल रेगेक्स है <DirectoryMatch /\.git/> - Bachsau
सही समाधान के लिए इसे जांचें magento.stackexchange.com/questions/202840/... - Pratik Kamani
पहला, गायन / ओपी के लिए धन्यवाद। ध्यान दें कि अपाचे 2.4 में "ऑर्डर, इनकार करें" और अगली पंक्ति को "सभी अस्वीकार करने की आवश्यकता" द्वारा प्रतिस्थापित किया गया है। इसके अलावा, उपरोक्त "अपाचे conf" नामक फ़ाइल को कई इंस्टॉलेशन "httpd.conf" नाम दिया गया है --- गायन का उपयोग सिर्फ एक अनौपचारिक कथन था, इसलिए उस शाब्दिक नाम की खोज न करें (शायद बिना कहने के जाना चाहिए, लेकिन आप कभी नहीं जानते लोग इसे कैसे पढ़ सकते हैं)। - Kevin_Kinsey


यह अन्य कई उत्तरों के समान प्रभाव डालता है लेकिन यह बहुत आसान है:

RedirectMatch 404 /\.git

यह जा सकता है .htaccess या आपकी सर्वर कॉन्फ़िगरेशन फ़ाइल। यह किसी फ़ाइल या निर्देशिका को छुपाता है जिसका नाम शुरू होता है .git (उदा। ए .git निर्देशिका या .gitignore फ़ाइल) 404 लौटकर। इसलिए न केवल आपके गिट रेपो की सामग्री छिपाई गई है, इसका अस्तित्व भी छिपा हुआ है।


122
2017-08-01 10:19



मुझे वास्तव में यह समाधान पसंद है। यह सरल और सुरुचिपूर्ण है। - Shoan
इसे रूट htdocs निर्देशिका में डालकर भी एक वैश्विक नौकरी करता है। - jor
इस विकल्प को भी सर्वश्रेष्ठ से प्यार करें। मुझे लगता है कि /.git या /.gitignore जैसे अनुरोधों के लिए 404 लौटने के लिए यह अधिक सुरक्षित है ताकि तथ्य यह भी हो कि गिट का उपयोग भी किया जा रहा है, बाहर से निर्धारित नहीं किया जा सकता है। - Ezra Free
ध्यान रखें कि यदि आपके पास निर्देशिका सूची सक्षम है, तो .git फ़ोल्डर अभी भी दिखाई देंगे, लेकिन जब आप उन्हें एक्सेस करने का प्रयास करेंगे तो आपको 404 मिलेंगे। - Andy Madge
@ बेनेट एमसीएलवे ने सहमति व्यक्त की, उत्पादन सर्वर पर वैश्विक स्तर पर निर्देशिका सूची सक्षम करने का लगभग कोई अच्छा कारण नहीं है। बस सोचा कि अगर यह किसी को बाहर पकड़ लेता है तो इसका उल्लेख उल्लेखनीय है। - Andy Madge


यदि आप .htaccess फ़ाइलों का उपयोग नहीं करते हैं, लेकिन इसके बजाय /gc निर्देशिकाओं और .gitignore फ़ाइलों को छिपाने के लिए /etc/apache2/httpd.conf (या जो भी आपके सर्वर की मास्टर conf फ़ाइल है) का उपयोग करना चाहते हैं, तो आप निम्न का उपयोग कर सकते हैं। मैंने मास्टर कॉन्फ सेटिंग के लिए ऊपर दिए गए उत्तर को गिटिनोर फ़ाइल को छुपाया नहीं है।

# do not allow .git version control files to be issued
<Directorymatch "^/.*/\.git+/">
  Order deny,allow
  Deny from all
</Directorymatch>
<Files ~ "^\.git">
    Order allow,deny
    Deny from all 
</Files>

13
2017-08-28 21:49



ब्लॉक मत करो www.example.com/.git/config Apache httpd 2.4.27 में फ़ाइल करें। - ilhan


यदि आप एक साझा होस्टिंग सेवा पर हैं और इसकी पहुंच नहीं है apache.conf, आप अभी भी अपनी .htaccess फ़ाइल में ऐसा कर सकते हैं, इस तरह:

RewriteEngine On
RewriteRule "^(.*/)?\.git/" - [F,L]

10
2018-03-23 19:21



धन्यवाद यह मेरे लिए साझा होस्टिंग स्थिति में काम करता है जहां शीर्ष जवाब नहीं था - Plato


### never deliver .git folders, .gitIgnore
RewriteRule ^(.*/)?\.git+ - [R=404,L]

# 2nd line of defense (if no mod_rewrite)
RedirectMatch 404 ^(.*/)?\.git+

यह काम करता है .htaccess, नहीं http.conf पहुंच आवश्यक है। इसे पुनः लिखने वाले नियमों के पहले के रूप में शामिल करें। प्रारंभ में लगा Rewrite On अगर जरुरत हो।

एक सुरक्षा कोण से, मैं 403 के ऊपर एक फर्जी 404 पसंद करता हूं, हमलावर के लिए अधिक जानकारीपूर्ण। यह सुनिश्चित करने के लिए, आपके लिए अन्य कार्यों को भी दो में से एक टिप्पणी करें।

बीटीडब्ल्यू, अच्छे बदलाव हैं, दोनों के लिए आपके लिथमस परीक्षण हैं:

http://localhost/.gitignore
http://localhost/.git/HEAD

6
2018-05-26 10:08



दोनों नियम क्यों हैं? सरल रीडायरेक्ट मैच अपने आप पर पर्याप्त है। (इसके अलावा, regexes बिल्कुल सही प्रतीत नहीं होता है - अंत में प्लस क्यों?) - Bennett McElwee
व्यक्तिगत पैरानोआ / दोगुनी सुरक्षा। यदि रिवाइटइंजिन बंद हो जाता है (केंद्रीय कॉन्फ़िगरेशन परिवर्तन, खराब टीम संचार, दुर्भाग्यपूर्ण सर्वर "अपडेट", ... आप इसे नाम दें :-) + अप्रचलित है या $, अच्छा बिंदु होना चाहिए! (परीक्षण के लिए कोई समय नहीं, क्षमा करें।) - Frank Nocke
यदि आप चिंतित हैं कि रिवाइटइंजिन बंद हो सकता है, बस डालें RewriteEngine On आपके रिवाइटरूले से पहले। लेकिन किसी भी तरह यह tautological और अनावश्यक है क्योंकि सरल RedirectMatch अपने आप पर पर्याप्त है। हालांकि यह भी सरलीकृत किया जा सकता है। असल में मैं सिफारिश कर रहा हूँ मेरा जवाब बजाय। :) - Bennett McElwee
लिटमस परीक्षण के लिए +1।


.Git निर्देशिका दोनों के साथ-साथ .gitacore और .gitmodules जैसे .htaccess का उपयोग करके अन्य फ़ाइलों की सुरक्षा के लिए, उपयोग करें:

RewriteEngine On
RewriteRule ^(.*/)?\.git+ - [F,L]
ErrorDocument 403 "Access Forbidden"

5
2017-10-28 22:04



मेरे लिए काम करता है, हालांकि पिछली त्रुटि दस्तावेज़ का कोई प्रभाव नहीं पड़ता है। एक सुरक्षा कोण से, मैं हमलावर को एक सूचनात्मक 403 पर 404 पर एक फर्जी कल्पना करना चाहता हूं ... - Frank Nocke
यह एक बुरा विचार है, क्योंकि यह हैकर्स को जानकारी का खुलासा करता है। 403 का मतलब है कि यह वहां है, 404 का मतलब है कि यह नहीं है। सर्वर के सेटअप पर हर तथ्य एक हैकर के लिए उपयोगी है। मैं इसे संशोधित करने पर विचार करता हूं। - GerardJP


मैं हमेशा निम्नलिखित पंक्ति को vhost टेम्पलेट में जोड़ता हूं

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

बस यह सुनिश्चित करने के लिए कि कोई भी VCS विशिष्ट डेटा तक नहीं पहुंच सकता है। सही काम करता है।


3
2018-03-18 15:48





मान लें कि आपका वेबसर्वर एक अलग उपयोगकर्ता का उपयोग कर रहा है जिसे आप .git रिपॉजिटरी तक पहुंचने के लिए उपयोग करते हैं, आप .git निर्देशिका पर दूसरों के लिए निष्पादन बिट अक्षम कर सकते हैं।

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


1
2017-12-11 15:09





आप शायद सेवा से इनकार करना चाहते हैं .gitignore भी।

एक बिंदु से शुरू होने वाली फ़ाइलें लिनक्स में छिपी हुई हैं।

इसलिए, केवल 404 जो कुछ भी एक बिंदु से शुरू होता है:

RedirectMatch 404 /\.


0
2018-03-18 14:36





उन लोगों के लिए जो सभी लिनक्स वितरण (आमतौर पर "।" से शुरू होने वाली सभी फाइलों पर "छिपी हुई" फाइलों और निर्देशिकाओं से इंकार कर रहे हैं, सर्वर सर्वर संदर्भ में रखे गए अपाचे 2.4 पर क्या काम करता है:

<FilesMatch "^\.(.*)$">
    Require all denied
</FilesMatch>
<DirectoryMatch "/\.(.*)">
    Require all denied
</DirectoryMatch>

और यहां पुरानी अपाचे 2.2 शैली है (समान रेगेक्स, केवल अलग लेख निर्देश):

<FilesMatch "^\.(.*)$">
    Order deny,allow
    Deny from all
</FilesMatch>
<DirectoryMatch "/\.(.*)">
    Order deny,allow
    Deny from all
</DirectoryMatch>

तो आपको चिंता करने की ज़रूरत नहीं है .git या .svn विशेष रूप से। यह चीजों से भी मेल खाएगा .htaccess तथा .htpasswd स्वाभाविक।

निजी तौर पर, मुझे 404 के बजाय ऐसे अनुरोधों के लिए 403 जारी करना पसंद है, लेकिन आप आसानी से ऑथ इनकार के बजाय रीवाइट्रूल का उपयोग कर सकते हैं, जैसे:

<FilesMatch "^\.(.*)$">
    RewriteRule "^(.*)$" - [R=404,L]
</FilesMatch>
<DirectoryMatch "/\.(.*)">
    RewriteRule "^(.*)$" - [R=404,L]
</DirectoryMatch>

0
2017-11-14 00:23