मैं अपनी वेबसाइट उपयोगकर्ताओं को मनमाने ढंग से पढ़ने के लिए केवल SQLite3 डेटाबेस तक पहुंच देना चाहता हूं, उन्हें डेटाबेस में लिखने या अन्य नुकसान करने के बिना। कैसे?सुरक्षित पढ़ने-योग्य sqlite3 डेटाबेस
db फ़ाइल बनाना केवल पढ़ने के लिए एक छोटे से मदद करता है, लेकिन की तरह कमांड "संलग्न", ".load" और ".output" लोगों को पढ़ने के लिए/अन्य फ़ाइलें, जो सुरक्षित नहीं किया जा सकता है लिखने की अनुमति है।
बेशक, अगर मुझे ऐसे सभी आदेशों को पता था, तो मैं सिर्फ उनके खिलाफ फ़िल्टर करता हूं, लेकिन मैं ज्यादातर उन आदेशों के बारे में चिंतित हूं जिनके बारे में मैंने नहीं सोचा है।
मैं राईट अस्वीकृत करने के लिए sqlite3 के स्रोत कोड को बदलने के लिए कुछ समय के लिए कोशिश की, लेकिन इस कठिन की तुलना में यह लग रहा है है: भी SELECT कथन आदि कुछ आंतरिक आवेषण करने के लिए/प्रकट होता है।
नोट:मैं डॉस हमलों पर विचार किया है, और 5s या कुछ करने के लिए cputime ulimit होगा। मेरी मुख्य चिंता फाइलों/"हैकिंग" को नुकसान पहुंचाती है, न कि डॉस।
chroot() काम कर सकता है, लेकिन चरम लगता है।
विचार?
संपादित करें: वाह, क्या मैंने वास्तव में यह 3+ साल पहले पूछा था?
तब से, I've actually written a program to do this.
जो मुझे लगता है (लेकिन मैं गलत हो सकता है) यथोचित सुरक्षित है।
मुझे लगता है कि मैं वास्तव में यहां "मेटा-समाधान" ढूंढ रहा हूं। उदाहरण के लिए, अगर मैंने अपनी पूरी प्रणाली को केवल पढ़ने के लिए सीडी से भाग लिया, तो मुझे चिंता करने की ज़रूरत नहीं होगी कि sqlite3 क्या कर सकता/नहीं कर सकता। यह मेरे मामले में बहुत चरम है, लेकिन सामान्य विचार यह है कि मैं एक समाधान ढूंढना चाहता हूं जो sqlite3 गुणों के आधार पर w/o काम करता है। – barrycarter