مدیریت جلسه – این طرح نامیده می شود و چگونه باید دقیقا کار کند؟

بنابراین من درباره ارتباطات سرویس گیرنده سرور و چگونگی حفظ این خصوصی، به ویژه از حملات میان محور، فکر کردم. من با یک طرح که من مطمئن هستم در حال حاضر وجود دارد، اما من می توانم نتایج جستجوی دقیق بتن را پیدا کنید برای کسب اطلاعات بیشتر در مورد آن. [1965،9002] این فکر من آغاز شد که زمانی که یک مشتری به سرور متصل می شود، آنها می خواهم ایجاد یک کانال ارتباطی امن، بنابراین مشتری می تواند یک جفت کلید خصوصی / عمومی تولید کند و کلید عمومی را به سرور ارسال کند. مشکل این است که کلید عمومی را به سرور بطور ایمن (در غیر این صورت یک مرد در وسط می تواند تمام پیام ها را با استفاده از کلید عمومی که از اولین پیام گرفته شده است، رمزگشایی کند، کلید عمومی خود را به پیام متصل کند، از کلید خصوصی مربوط به رمزگشایی استفاده کند پاسخ و پس از ذخیره آن، دوباره رمزگذاری شده با کلید عمومی واقعی مشتری).

بنابراین من یک راه حل ممکن را تصور کردم: مشتری ابتدا کلید عمومی را از سرور دریافت می کند، آن را برای رمزگذاری کلید عمومی خود استفاده می کند. MitM می تواند تمام پیام ها را تحت تأثیر قرار دهد، اما قادر به رمزگشایی هر یک از آنها نیست – فقط سرور واقعی می تواند درخواست مشتری را رمزگشایی کند و پاسخ تنها توسط مشتری واقعی رمزگشایی می شود. هنگامی که سرور کلید عمومی مشتری را می داند، آن را ایمن آن را ذخیره می کند و از آن برای رمزگذاری هر گونه ارتباط بیشتر استفاده می کند.

من چند سوال مرتبط دارم.

  1. این نوع امنیت / دستخط چیست؟
  2. I کلمه nonce را نادیده گرفته است اما درست است که این در مورد جلوگیری از حملات پخش و نه مشکل MitM من در حال تلاش برای حل کردن
  3. کلید اولیه که سرور به مشتری می فرستد، باید ثابت می شود و احتمالا در جایی منتشر می شود، بنابراین مشتریان می توانند "مراحل عمومی کلید من را در جلسات بعدی به من برگردانند؟" یا باید یک کلید تازه تولید شده برای هر مشتری در هر درخواست جلسه جدید باشد؟
  4. در عوض، آیا کلید عمومی مشتری باید با هر جلسه تغییر کند یا مشتری بتواند همان کلید را دوباره استفاده کند، پس از آنکه به طور امن به سرور منتقل شد؟ 19659006] خطراتی برای این مسئله وجود دارد، به غیر از نقص آشکار یکی از طرفین درگیر برای حفظ خصوصی private private؟

من مطمئن هستم که این نسبتا رایج است و احتمالا در حال حاضر چگونه بسیاری از مدارک احراز هویت کار می کنند، از پاسخ دادن به تمام این سؤالات به طور جداگانه، اگر کسی بتواند اصطلاحات مناسب را به من ارائه دهد، من خوشحال خواهم شد (من برخی از ترکیب کلمات کلیدی مانند «سرویس گیرنده / سرور»، «رمزنگاری نامتقارن»، «ایجاد جلسه» را امتحان کردم؛ هر چیزی مفید پیدا کنید) و حتی اگر این یک SE نظری باشد، حدس می زنم که مانند همه ی امنیتی خوب نباید اجرای خود را رول کند، بنابراین هر نمونه از یک برنامه مناسب برای سرویس دهنده / سرور (به عنوان مثال در PHP) با استفاده از کتابخانه های معتبر می تواند خوشایند باشد.

ایمن با جلسات – Exchange Security Stack Security

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

صفحه ورود
    

     $ result = LoginManager :: ورود ($ username، $ password)؛

    اگر ($ نتیجه == "invalid_username") {
        echo نام کاربری نامعتبر! '؛
    }

    اگر ($ result == "invalid_login") {
        echo 'ورود نامعتبر!'؛
    }

    $ expires = gmdate ('Y-m-d'، strtotime ($ Date. + 1 روز))؛
    DataBase :: query ("INSERT INTO sessions VALUES (: session،: userid،: expires)"، array (': session' => $ result، ': userid' => $ userid، ': expires' => $ expires ))

    setcookie ("جلسه"، $ نتیجه)؛
    //
    برگشت؛
}

echo '

نام کاربری:

رمز:

'؛ ؟>

LoginManager

  16 || strlen ($ password)> 50 || strlen ($ password) < 5){
        return 'invalid_bounds';
    }

    $sql = "SELECT * from accounts WHERE username = :username";
    $users = Database::query($sql, array(':username' => $ username))؛

    اگر (sizeof ($ کاربران) == 0) {
        return 'invalid_username'؛
    }

    $ userdata = $ کاربران [0]؛

    $ salt = '-45dfeHK / __ yu349 @ - / klF21-1 _  / 4JkUP / 4'؛
    اگر (password_verify ($ password. $ salt، $ userdata ['password'])) {
        $ session = com_create_guid ()؛
        بازگشت $ session؛
    } else {
        بازگشت 'invalid_login'؛
    }
}

؟>

سپس صفحه اصلی (مثال کار با جلسه)

  $ session))؛

اگر (sizeof ($ sessions) == 0) {
    // تغییر مسیر برای ورود به صفحه
    برگشت؛
}

$ session = $ sessions [0]؛

$ date = جدید DateTime ($ session ['expires'])؛
$ now = جدید DateTime ()؛

اگر ($ تاریخ < $now) {
    //Expired session : Redirect to login
    return;
}

//Display feed

?>

آیا نقصی وجود دارد که می تواند مشکلات جدی مانند تزریق یا جلسه سلامی و / یا مناطقی را که من باید بهبود ببخشد، ایجاد کنم؟

کار با نشانه ها و جلسات کاربر

من سعی دارم یک برنامه رسانه اجتماعی و وب سایت را توسعه دهم. مشکل این است که من سعی می کنم راه امن برای کار با لينك ها و جلسات را پیدا كنم زيرا روش های ديگر به نظر نمی آيند يا روش های بهتري دارند.

برای وبسايت، هنگامی كه شما وارد سیستم می شوید، اگر رمز عبور و نام کاربری را داشته باشم باید ذخیره كنم جلسه به عنوان کوکی یا ایجاد نوعی از نشانه؟ من ترجیح می دهم آن را منقضی نمی شود، زیرا این امر برای کاربران خجالتی است، اما من می خواهم آن را در همان زمان امن است.

برای برنامه، هنگامی که شما وارد سیستم شوید باید یک جلسه را ذخیره کنید و با آن کار کنید؟ یا باید یک نشانه را که به صورت اتوماتیک تجدید می کند داشته باشد؟ من نمی خواهم آن را به نیاز به کاربر برای ورود به سیستم از آنجا که مردم را به دور از

من با استفاده از نرم افزار و زبان های زیر

برنامه – Xamarin.Forms (C #)

وب سایت – PHP [19659002] پایگاه داده – خروجی زیر

** اگر جواب کامل در مورد توضیح آن همه من واقعا می خواهم بهترین راه را پیدا کنم خوشحال خواهم شد. با تشکر از قبل!

ایمن با جلسات – Exchange Security Stack Security

TL؛ DR: نه امن نیست

داشتن یک شناسه جداگانه برای هر دستگاه مهم است، زیرا اگر شما آنها را یکسان قرار دهید، هیچ چیزی باعث توقف دستگاه پس از ورود به سیستم کاربر نمیشود. 19659003] مهمتر از همه، تنها تغییر شناسه جلسه زمانی که کاربران تغییر رمز عبور فاجعه بار بد است. شناسه می تواند بسیار آسان تر از یک رمز عبور به سرقت رفته باشد. جلسات باید انقضا داشته باشند، در غیر این صورت توجه خاصی باید انجام شود، مثلا اجازه می دهد که کاربران از دستگاههایی که دیگر دسترسی ندارند، خارج شوند.

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