كيفية الحد من تنزيل نظام الملفات عبر المتصفح فقط من خلال تطبيق الويب الخاص بي

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

سؤال

أحتاج إلى أفضل طريقة لمنع أي وصول إلى ملفات DOC عندما لا يكون تطبيق الويب الخاص بي ، على سبيل المثال ، أحتاج إلى إخفاء بعض الملفات من محركات البحث أو المستخدمين العامين ، وقد يصل المستخدمون الخاصون فقط إلى تنزيلها وتنزيلها.

أرغب في حفظ الملفات في نظام الملفات وليس في DB حتى لا تزيد من استخدام DB.

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

المحلول

يمكنك تخزين ملفاتك في نظام الملفات ، في دليل لا يمكن الوصول إليه من خلال عنوان URL (مثل شقيق دليل الويب الخاص بك). هذا سيمنع الوصول المباشر.

بعد ذلك ، اكتب برنامج نصي PHP والذي ، عند الاستعلام عن ملف معين ، سيتحقق مما إذا كان يمكن للمستخدم الوصول إلى هذا الملف وإرساله به readfile (جنبا إلى جنب مع header لنوع المحتوى والتخلص من المحتوى).

نصائح أخرى

عندما تقول "المستخدمين من القطاع الخاص" فقط ، أفترض أن هذا يعني أن هؤلاء المستخدمين قد تم مصادقةهم بطريقة أو بأخرى. يمكنك تخزين هذه الملفات خارج دليل الويب ، ثم تقديمها عبر PHP/Perl/Your_Favorite_Programming_Language.

يمكن أن يؤدي الارتباط إلى برنامج نصي يتحقق مما إذا كان هذا المستخدم قد تمت مصادقة ذلك ، إذا كان الأمر كذلك ، يقدم الملف عبر البرنامج النصي.

في PHP ، بعد مصادقة المستخدم ، يمكنك استخدام:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

فقط تذكر أن تجعل هذا الدليل خارج جذر الويب الخاص بك ، وضبط الأذونات على نفس المستخدم الذي تعمل عليه البرامج النصية الخاصة بك (لا أحد ، عمومًا تحت Apache).

robots.txt هي وسيلة لمنع/السماح لبعض وكلاء مستخدم HTTP. إنها ليست الطريقة الأكثر أمانًا. يمكنك استخدام المصادقة الأساسية للسماح لتسجيل الدخول إلى تطبيق الويب الخاص بك.

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