مثلا من یک فایل دارم در روت سایت به این نام 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 هم میتونید چک کنید اسکریپت از کجا لود شده :
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 هستش که دیگه نیاز به هیچ کدوم از روش های بالا نباشه :)