PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : چطور از مشاهده مستقیم فایل توسط کاربر جلوگیری کنیم؟(با php)



mojtabakh18
March 31st, 2017, 01:41
سلام خوبین؟

مثلا من یک فایل دارم در روت سایت به این نام database.php

که کدهای اتصال به دیتابیسم در اون وارد شده

میخوام که کاربری اگه یک وقت ادرس این فایل رو پیدا کرد و این رو زد در ادرس بار مرورگر پیغام بده مثلا forbidden

ولی وقتی از داخل پروژه require_once می کنم کدها اجرا بشه

یعنی سیستم دسترسی به فایل داشته باشه اما کاربرا نه

ممنون

omid1991
March 31st, 2017, 01:54
سلام خوبین؟

مثلا من یک فایل دارم در روت سایت به این نام database.php

که کدهای اتصال به دیتابیسم در اون وارد شده

میخوام که کاربری اگه یک وقت ادرس این فایل رو پیدا کرد و این رو زد در ادرس بار مرورگر پیغام بده مثلا forbidden

ولی وقتی از داخل پروژه require_once می کنم کدها اجرا بشه

یعنی سیستم دسترسی به فایل داشته باشه اما کاربرا نه

ممنون
سلام وقت بخیر
فایل های مهم که انکلاد میشن و نیازی نیست کاربر مستقیم ببینه بزارید تو یه پوشه بعد کنار فایل ها یه فایل .htaccess ایجاد کنید کد زیر رو وارد و ذخیره کنید.


deny from all


در اینصورت فقط سرور میتونه بخونه کاربر نمیتونه به اون پوشه دسترسی داشته باشه

T.Toosi
March 31st, 2017, 02:03
سلام با php هم میتونید چک کنید اسکریپت از کجا لود شده :


if( $_SERVER['SCRIPT_FILENAME'] == "database.php" ) exit('!');

mojtabakh18
March 31st, 2017, 02:29
ممنون از دو عزیز

انشاالله فردا تست میکنم خبر میدم :)

MJmoonwalk
March 31st, 2017, 02:47
htaccess برای هر پوشه کار جالبی نیست. بهترین کار این است که در اجرا کننده سایت خود یک متغیر تعریف کنید و در ابتدای هر فایل php این کد رو بررسی کنید و در صورت عدم وجود محتوا اجرا نشود.

مثال:

if (!class_exists('MyDatastore', false))
{
exit;
}

در اینجا برنامه نویس در ابتدای فایل خود از حضور یک کلاس اطمینان حاصل میکند. اگر کلاس تعریف نشده باشد پس این فایل اشتباه فراخوانی شده و نیازی به اجرا ندارد.

phpcoding
March 31st, 2017, 03:48
سلام خوبین؟

مثلا من یک فایل دارم در روت سایت به این نام database.php

که کدهای اتصال به دیتابیسم در اون وارد شده

میخوام که کاربری اگه یک وقت ادرس این فایل رو پیدا کرد و این رو زد در ادرس بار مرورگر پیغام بده مثلا forbidden

ولی وقتی از داخل پروژه require_once می کنم کدها اجرا بشه

یعنی سیستم دسترسی به فایل داشته باشه اما کاربرا نه

ممنون

خیلی راه ها داره دوست عزیز . من دو نمونشو براتون مثال میزنم انشالله که اگه راه حل های دوستان کمکی نکرد راه حل من مثمر ثمر باشه
اولین راه که بهترین و اصولی ترینشه راه حلیه که دوست عزیزمون آقای omid1991 (http://www.webhostingtalk.ir/member.php?u=84707) اعلام کردن
دومین راه حل یه کد نویسی خیلی ساده و کوچولو . داخل فایلی که میخواید database.php رو بارگذاری کنید قبل از کد require یا include یه متغییر تعریف کنید با هر نامی و مقدرشو بزارید فالس . مثل کد زیر :


$redirect="false";
require_once("database.php");


حالا داخل فایل database.php اول از همه ی کد ها یه شرط بنویسید . به این صورت که اگه متغییر $redirect وجود داشت و مقدارش برابر با فالس بود که هیچی کانتینی بده کدهارو اگر نه ردایرکت بشه به یه آدرس دیگه . این هم نمونه کد که میتونید ازش استفاده کنید یا ویرایشش کنید :

database.php :


if(empty($redirect) OR (string)$redirect != "false"){
header("Location: http://address_morede_nazar");exit();
}


روش دومی که خدمتتون عرض کردم شاید یکم من در آوردی خود من باشه ولی خب به هیچ طریقی نمیشه دورش زد نه از طریق رکوئست نه از طریق متد و صد در صد امنیتش بالاس . با تشکر

AtrafNet
March 31st, 2017, 10:51
سلام
اگه فقط با php فراخوانیش میکنید به نظر من بهترین کار گذاشتن فایل خارج از دایرکتوری public_html هستش که دیگه نیاز به هیچ کدوم از روش های بالا نباشه :)