2013-06-17 10 views
5

सुरक्षा कारणों से, मेरे वेब सर्वर पर एक निश्चित फ़ाइल है जिसे मैं एक्सेस की निगरानी करने में सक्षम होना चाहता हूं। हर बार जब इसे एक्सेस किया जाता है, तो मैं एक MySQL लॉग तालिका में एक प्रविष्टि जोड़ना चाहता हूं। इस तरह, मैं वेब अनुप्रयोग के भीतर से सक्रिय रूप से सुरक्षा उल्लंघनों का जवाब दे सकता हूं।आप वेब सर्वर पर किसी फ़ाइल की निगरानी कैसे करते हैं और डेटाबेस (MySQL) में, आईपी पते द्वारा आदर्श रूप से प्रत्येक एक्सेस लॉग करते हैं?

+0

आप फ़ाइल एक्सेस ईवेंट को प्रोग्राम से निर्देशिका के लिए भी देख सकते हैं यानी ओ/एस एक कार्यक्रम उत्पन्न करेगा और आपके कार्यक्रम की दिनचर्या को कॉल करेगा। बस उस डेटाबेस को लॉग करें और जो भी आप चाहते हैं वह करें। उदा ,. एसएमएस संदेश आदि भेज सकते हैं शायद दिलचस्प? http://stackoverflow.com/questions/4205815/monitoring-file-and-directory-access-on-linux। यह विंडोज़ पर भी समान है। –

उत्तर

1

अपाचे HTTP सर्वर लॉगिंग क्षमताओं प्रदान करता है।

सर्वर एक्सेस लॉग सर्वर द्वारा संसाधित सभी अनुरोधों को रिकॉर्ड करता है। एक्सेस लॉग का स्थान और सामग्री CustomLog निर्देश द्वारा नियंत्रित होती है। LogFormat निर्देशों का उपयोग लॉग की सामग्री के चयन को सरल बनाने के लिए किया जा सकता है। यह खंड वर्णन करता है कि एक्सेस लॉग में जानकारी रिकॉर्ड करने के लिए सर्वर को कॉन्फ़िगर कैसे करें।

इसका उपयोग किसी फ़ाइल को लॉग लिखने के लिए किया जा सकता है। यदि आपको एक MySQL तालिका में स्टोर करने की आवश्यकता है, तो डेटाबेस में फ़ाइल आयात करने के लिए क्रॉन जॉब चलाएं।

लॉग पर आगे की जानकारी यहां है: http://httpd.apache.org/docs/1.3/logs.html#accesslog

0

फ़ाइल तीन अंक से पहुँचा जा सकता है:

  1. प्रत्यक्ष फाइल सिस्टम का उपयोग कर सकते
  2. www.example.com/importantfile.jpg तरह यूआरएल के लिए कॉल (अपाचे फ़ाइल में कार्य करता है)
  3. फ़ाइल को पढ़ने वाले आपके सर्वर www.example.com/readfile.php?name=important.jpg पर कुछ php स्क्रिप्ट पर कॉल करें।

यदि आप केवल 2 मामले के बारे में चिंतित हैं तो ऋषि दुआ के समाधान की जांच करें।

लेकिन यदि आप उससे अधिक चाहते हैं तो आपको fileatime() कॉल के साथ एक स्क्रिप्ट लिखनी चाहिए और फिर उदाहरण के लिए हर मिनट चलाने के लिए इसे क्रॉन में जोड़ें।

इसके लिए स्यूडोकोड:

<?php 
$previous_access_time = get_previous_access_time(); // get the previous last access time from you remembered in db or textfile or whatever 
$current_access_time = fileatime('path/to/very_important_file.jpg'); 
if ($previous_access_time != $current_access_time) { 
    log_access_to_db(); 
    save_new_access_time(); // update the new last access time 
} 

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

आप को गंभीरता से सुरक्षा को लेकर चिंतित हैं, तो मुझे लगता है कि आप util this

1

इसके PHP7 से हटा दिया गया की तरह लेकिन जो इस पोस्ट पाता है किसी और के लिए कुछ लेखा परीक्षा के लिए जाँच करने के लिए है वहाँ के भीतर कई विकल्प होते हैं एफएएम (अब पीईसीएल) एक्सटेंशन। यह फ़ंक्शन http://php.net/manual/en/function.fam-monitor-file.php वर्णन करता है कि

अतिरिक्त रूप से आप http://php.net/manual/en/function.stat.php के साथ फ़ाइलों की स्थिति के बारे में बहुत अधिक जानकारी प्राप्त कर सकते हैं। इसे एक क्रॉन या नींद संचालित स्क्रिप्ट के भीतर रखें और फिर आप बदल सकते हैं जब यह बदल गया।

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