• 1404/05/14

امنیت یک سایت :

با سلام خدمت استادگرانقدر

بنده با آموزش های شما یک سایت راه اندازی کردم و  همانطور که آموزش داده بودید اول کاربر را احراز هویت کردم بعد که وارد می شود  ،آنطور که شما آموزش داده بودید وقتی صفحه هارا  به یک کاربر نمایش می دهم و یاکاربر را به آن صفحه میبرم که حتما احراز هویت شده باشد تا اینجا اکی و سایت کار می کند ولی  در سرچ گوگل صفحات من  برای کاربر ناشناس یا احراز هویت نشده  نمایش داده می شود یعنی گوگل آن صفحه ها را پیشنهاد می دهد جالب اینکه مثلا صفحه ادمین من  در سرچ گوگل اموده و کارهم می کند بدون اینکه کسی لاگین کرده باشد. اشکال کجاست ؟

با تشکر

  • 1404/05/14
  • ساعت 13:20

سلام دوست من

مثل اینکه احراز هویت تنها در سمت فرانت اند انجام شده ولی در سیمت سرور هیچ محدودیتی برای دسترسی به صفحات حساس مثل صفحه ادمین وجود نداره.

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

در سایتهایی که با React (یا هر فریمورک فرانت‌اند دیگه‌) ساخته میشن امنیت واقعی فقط از طریق بک‌ اند تامین میشه. یعنی اینکه در React چک کنی که اگر کاربر لاگین نیست اونو به صفحه لاگین بفرستی فقط یک کار ظاهری هست.

اگر API یا صفحه حساس (مثل /admin) روی سرور بدون محدودیت در دسترس باشه هر کسی یا حتی ربات‌ های گوگل هم میتونن اون رو باز کنن.

حالا چه کاری میتونیم انجام بدیم ؟

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

مثلا اگر از Node.js استفاده میکنی با استفاده از Expressjs باید همچین کاری انجام بدی :

app.get('/admin', (req, res) => {
  if (!req.user) {
    return res.status(401).send('Unauthorized');
  }

  // فقط کاربر احراز هویت‌شده به این صفحه دسترسی داره
  res.sendFile(path.join(__dirname, 'admin.html'));
});

اگر فقط فرانت اند داری و از firebase یا هر API خارجی استفاده میکنی باید کنترل سطح دسترسی رو در اون سرویس ها تنظیم کنی.

راه دوم بستن ایندکس شدن صفحات حساس توسط گوگل با ساخت فایلی به نام robots.txt

در روت یا ریشه سایتت (در ری اکت فولدر public) یک فایل به اسم robots.txt بساز و این محتوا رو بهش بده :

User-agent: *
Disallow: /admin

این فایل با این محتوا به گوگل میگه که صفحه admin رو ایندکس نکنه.

راه سوم استفاده از متاتگ برای جلوگیری از ایندکس شدن هست

در <head> صفحه ادمین این مورد رو قرار بده

<meta name="robots" content="noindex, nofollow">

------------------------------------------------

خیلی ها فکر میکنن وقتی در react مسیرها رو محدود میکنن یعنی امنیت کامل دارن ولی فراموش میکنن که سورس کد ری اکت برای همه قابل مشاهده هست و اگر مسیر admin پابلیک بشه هر کسی میتونه مستقیم واردش بشه.

-------------------------------------------------

پس امنیت واقعی باید در سمت سرور باشه که مجوز بدی دیده بشه یا نه!

حتماً فایل robots.txt رو تگ متا داشته باش

مطمئن شو که مسیرهایی مثل /admin فقط به کاربر لاگین شده با سطح دسترسی درست اجازه دیدن داده بشه.

خوب موفق باشی بازم سوالی داشتی در خدمتم


logo-enamadlogo-samandehi