ایمن با جلسات – 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
?>
آیا نقصی وجود دارد که می تواند مشکلات جدی مانند تزریق یا جلسه سلامی و / یا مناطقی را که من باید بهبود ببخشد، ایجاد کنم؟
ریسک کسب و کار – API Security – Mutual TLS vs TLS با رمز مشترک.
هر دو می توانند امن باشند، بنابراین حملات بالقوه در اینجا مهم نیست.
تفاوت ها در مدیریت هویت و کلید است.
با PSK (کلید مشترک به اشتراک گذاشته شده) شما فقط یک شناسه کلیدی برای مشتری، یک گواهی با صفات X.500 مانند نام مشترک نیست. بنابراین برای شناسایی هویت شما باید اطلاعات شناخته شده قبلی را به شناسه کلیدی پیوند دهید.
با PSK شما یک کلید مخفی را بین سرویس گیرنده و سرور به اشتراک می گذارید. اما اگر چندین مشتری یا سرور چندگانه وجود داشته باشد، لازم است کلید های بین بسیاری از اشخاص را به اشتراک بگذارید. با گواهی – یا به جای آن، زیرساخت کلید عمومی (PKI یا PKIX) با استفاده از گواهینامه ها ایجاد می شود – شما فقط باید یک راز (یا نسبتا خصوصی) کلید در هر نهاد داشته باشید. کلید عمومی می تواند مورد اعتماد باشد، اگر بخشی از یک گواهینامه در یک زنجیره گواهی باشد، بنابراین کلیدهای عمومی لازم نیست که توزیع شوند.
همانطور که قبلا اشاره کردید، بسیاری از گزینه های دیگر مدیریت کلید برای گواهینامه ها
یکی از معایب استفاده از certs این است که سرور cert معمولا نام سرور را شامل می شود و اتصال ممکن است بر روی میزبان های متفاوت نصب نشده باشد.
برای کسب و کار به کسب و کار من قطعا برای تأیید هویت مشتری / سرور با استفاده از گواهی ها. این رایج ترین و انعطاف پذیر ترین گزینه است. اطمینان حاصل کنید که فقط 19459005 گواهی هایی را که نیاز دارید (و نه همه گواهینامه هایی که به وسیله یک اعتماد معتبر اعتماد دارند) اعتماد کنید.
ایمن با جلسات – Exchange Security Stack Security
TL؛ DR: نه امن نیست
داشتن یک شناسه جداگانه برای هر دستگاه مهم است، زیرا اگر شما آنها را یکسان قرار دهید، هیچ چیزی باعث توقف دستگاه پس از ورود به سیستم کاربر نمیشود. 19659003] مهمتر از همه، تنها تغییر شناسه جلسه زمانی که کاربران تغییر رمز عبور فاجعه بار بد است. شناسه می تواند بسیار آسان تر از یک رمز عبور به سرقت رفته باشد. جلسات باید انقضا داشته باشند، در غیر این صورت توجه خاصی باید انجام شود، مثلا اجازه می دهد که کاربران از دستگاههایی که دیگر دسترسی ندارند، خارج شوند.
PS: من همچنین معتقدم که شناسه های جلسه شما تصادفی هستند. اگر آنها پیوسته باشند، شما همچنین باید به برخی از نوع نشانه / مخفی برای احراز هویت نیاز داشته باشید، در غیر این صورت حمله ممکن است فقط از طریق تمام شناسه ها و گرفتن اطلاعات. توجه داشته باشید که استفاده از شناسه های تصادفی ممکن است ترجیح داده شود، زیرا مهاجمان هنوز ممکن است برخی از اطلاعات مانند تعداد کاربران ثبت شده را دریافت کنند، اگر ID ها تصادفی نیستند. شما می توانید علاوه بر شناسه تصادفی نیز راز استفاده کنید، نمی توانید صدمه بزنید و ممکن است کمک کنید، پس چرا؟