الطريقة الأكثر تدعم لحماية flatfiles (sqlite dB) من وصول HTTP؟

StackOverflow https://stackoverflow.com/questions/717444

سؤال

أقوم بتطوير تطبيق PHP يستخدم SQLite كأنظمة لإدارة قواعد البيانات، MySQL و PostgresQL وما إلى ذلك ليس بديلا (على الرغم من أنني أود حقا استخدام PGSQL)، لأنني أريد أن تكون الإعداد أن تكون مبتدئين للغاية وصدير الصداع على حد سواء وبعد الآن العديد من الأشخاص يستخدمون استضافة مشتركة، ويقدم الكثير منهم فقط إمكانية الوصول إلى بروتوكول نقل الملفات مباشرة إلى دليل HTDocs، ولكن ليس أعلاه. وهذا يعني أن العملاء سيتعين عليهم وضع ملف قاعدة بيانات SQLite داخل HTDocs، مما يعني أنه يمكن الوصول إليه إلى العالم ويمكن لأي شخص تنزيله.

ما هي أفضل طريقة لإعطاء العميل نوعا من الحماية من ذلك، وهذا بسيط ودعم أيضا على جميع خوادم HTTP؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام ملف .htaccess وقفل اسم قاعدة البيانات حتى لا يمكن الوصول إليه خارجيا. ستعمل العديد من الخوادم بالفعل على ذلك لجميع أسماء الملفات بدءا من ".". سيعمل ذلك على Apache بالطبع، لكنك ستظل بحاجة إلى إصلاحات لخوادم الويب الأخرى.

أفضل رهان لديك هو إعداده حقا بحيث يمكن استضافته أعلاه HTDocs. ربما يمكنك استخدام برنامج نصي التثبيت الذي يتحقق من جذر المستند وينقل ملف SQLITE إلى دليل أعلى إذا كان ذلك ممكنا.

لسوء الحظ، نظرا لأن SQLite تتم قراءتها وكتبها من قبل المستخدم نفسه كخادم الويب، فلا توجد طريقة سهلة لقفله من الوصول الخارجي. إخفاءها وتحريكها هي الحلول الحقيقية الوحيدة التي يمكنني التفكير فيها.

نصائح أخرى

لا توجد حماية ستعمل على جميع برامج خادم HTTP المستخدمة. أفضل ما يمكنك القيام به هو نقله خارج جذر المستندات، حيث يتم استخدام خادم الويب الذي لا ينبغي أبدا تقديمه.

في الواقع حماية الملفات من الخدمة الموجودة داخل جذر المستند تتطلب معرفة برامج الخادم وتغيير تكوينها.

بشكل افتراضي (لتركيبات Linux التي قمت بتشغيلها)، تقوم Apache فعليا بأي شيء يبدأ .ht من يجري خدم مباشرة:

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

إذا كنت تفضل استخدام اسم الملف sqlite.db للحصول على ملف قاعدة البيانات الخاص بك، يمكنك حظره باستخدام هذه القاعدة:

<Files ~ "\.db$">
    Order allow,deny
    Deny from all
</Files>

بالطبع، لتنفيذ هذه القاعدة في معظم مزودي الاستضافة، سيتعين عليك توزيع .htaccess ملف يحتوي على القاعدة. يمكن تفويتها أحيانا لأنها لا تظهر في قوائم دليل NIIX * (أو في عميل FTP) افتراضيا.

أنا لست على علم بأي نوع مماثل من القاعدة التي يمكن استخدامها لخادم Microsoft IIS في بيئة متضيفة مشتركة.

إذا كان سيكون خادم Apache Web، فاستخدم ملف .htaccess. لست متأكدا من كيفية القيام بذلك على IIS.

أعتقد أنه أول شيء يجب عليك وضع ملف index.html فارغا أو ما يعادله منع دليل القائمة في المستعرض. لن يمنع ذلك للوصول إلى هذا الملف إذا كان الاسم والمسار معروفا ولكنه أفضل من لا شيء إذا لم تكن متأكدا من خادم الويب الذي ستكون عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top