سلام دوستان می خواستم بدونم مثلا دایرکتوری پابلیک و ... رو اگر کسی در هاست واقعی جستجو کند می تواند محتویات ان را مشاهده کند؟
و خوشحال میشم که تمام دسترسی های کاربر به لاراول رو توضیح بدین و بگین چه عیب هایی داره و چجوری درست میشه؟
@hesammousavi @ali.bayat @mohsenbostan
@moeinbabaei
سلام.
تنها دایرکتوری که به صورت عمومی باید در دسترس باشه، public هستش. یعنی سرور باید محتویات داخل public رو اجرا کنه و به غیر از اون هیچ کس نباید دسترسی به غیر از اون داشته باشه.
@mohsenbostan
یعنی ما باید کاری کنیم که کسی دسترسی نداشته باشه یا به صورت خودکار خود لاراول این کار رو می کنه
@moeinbabaei
لاراول که خودش نمی تونه چنین کاری بکنه. شما باید وب سرور رو در حالتی کانفیگ کنید که IP به دایرکتوری public اشاره کنه.
@mohsenbostan
خب دوست عزیز سوال منم همینه از کجا کانفیگ کنم چون من هیچ وقت کانفیگ نکرده امپ!
خوشحال میشم کمکم کنی
سلام در لاراول پوشه ای هست به نام storage هر فایلی که عموم کاربران نباید بهش دسترسی داشته باشن و فایل های مهمی هستن مثل ویدیوهای آموزشی در مسیر storage/app ذخیره میشن و فقط قابل دانلودن و میشه برایشون لینک دانلود با زمان معین تعیین کرد و هر زمان که فایلی خریداری شده لینک دانلود زمانداری از اون فایل تولید و به کاربر میدی .
البته شما میتونید فایل هایی که برای عموم قابل دسترس و مشاهده اندو در پوشه storage در مسیر storage\App\public قرار بدی و مثل پوشه public بهشون دسترسی داشته باشی . البته بعد اجرای دستور php artisan storage:link
مستندات لاراولشم اینجاست
https://laravel.com/docs/7.x/filesystem
سلام، اگر سوالتون رو درست متوجه شده باشم ، اغلب موقع آپلود، پوشه های پروژه یک level عقب تر از پوشه عمومی host (یعنی قبل از پوشه public_html) آپلود میشه (همونجایی که هاست ها مینویسن DON'T UPLOAD HERE !! ) ؛ و فقط پوشه public پروژه تون رو در پوشه public_html آپلود میکنین. اینطوری بحث دسترسی به پوشه های غیرعمومی هم تا حد زیادی مرتفع میشه.
@moeinbabaei
بستگی داره. اگر وب سرور تون Apache باشه، نیازی به کار خاصی نیست. اما اگر Ngnix هستش می تونید از کانفیگ زیر استفاده کنید:
server {
listen 80;
server_name example.com;
root /srv/example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
مستندات خود لاراول رو هم یه نگاهی بندازید بد نیست.
@mohsenbostan خوب باید از هاستینگ بپرسیم که نوع هاست چیه؟
و این که این کد رو باید کجا گذاشت
خیلی ممنون که کمک کردی
اگه هاست شما Cpanel ارائه میده میتونید با سی پنل domain path رو مشخص کنید بگید به پوشه پابلیک اشاره کنه.
اما به هر حال میتونید نام پوشه ی public رو به public_html تغییر بدید و پروژه ی خودتون رو زیپ کنید و بیرون از پوشه public_html درون سرور از حالت فشرده خارج کنید. با اینکار محتوای فایل public_html پوشه ی لاراول شما درون public_html سرور قرار میگیره و باقی محتوا بیرون از public_html میمونه و چون به صورت دیفالت دامین به public_html اشاره میکنه باعث میشه کسی دسترسی به سورس های لاراول شما نداشته باشه.
سلام
دیدم فایلهای لاراول رو میریزن توی فولدر جدا مثلا core در public_html و فایلهای public رو در همون public_html قرار میدن..
دوستان کانفیگ این چطوریه؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟