آفلاین
user-avatar

HSTS Policy در سایت

7 ماه پیش
توسط نیما - ش آپدیت شد
آفلاین
user-avatar
نیما - ش ( 57339 تجربه )
7 ماه پیش
تخصص : برنامه نویس وب

دوستان سلام،

کسی میتونه توضیحی درمورد HSTS Policy بده که چی هست و چطور میشه تو سایت آن را پیاده سازی کرد؟

آفلاین
user-avatar
mohammad khosravi ( 23990 تجربه )
7 ماه پیش

چیزی که فهمیدم در رابطه باهاش اینه که یک مکانیزم امنیتی هست برای جلوگیری از حملات
man-in-the-middle attack (MITM) و cookie hijacking هستش
man-in-the-middle attack (MITM):حملاتی هستش که در اون مهاجم میاد و زمانی که بین دو کاربر ارتباط برقرار میشه مثلا از طریق سوکت
بینشون قرار میگیره و یکی از کاراش استراق سمع هست و میتونه از طرف یک کاربر (از اون دو کاربر) بیادش و پیغام جعلی بعده به کاربر دیگه(مهاجم) و اون کاربر فکر میکنه که اون پیغام رو کاربر سمت مقابلش داده
cookie hijacking:اینم روشی هست برای سرقت کوکی های حساس کاربر مثلا شما آمدید id هش شده کاربر رو تو کوکی هاش ذخیره کردین و بعد با اون id میاید و اهراز هویت انجام میدید

آفلاین
user-avatar
mohammad khosravi ( 23990 تجربه )
7 ماه پیش

روش پیاده سازیش هم به شکلی هست که موقع پاسخ سرور (response) یک header ست میکنید که تو اون هدر یک خصوصیت داره به اسم Strict-Transport-Security که باید براش زمان مشخص کنید و کلید دسترسی که تو اون زمان مشخص شده کاربر ها با هم اتصال برقرار میکنن از طریق پروتکل امن https و اگه درخواستی از نوع http به سمت سرور ارسال بشه به طور خودکار کاربر به سمت اتصال امن https منتقل میشه و با این حرکت جلوگیری میشه از اون حملات
تو نود جی اس این دستورات:

var httpProxy = require('http-proxy');

// https server to decrypt TLS traffic and direct to a normal HTTP backend
var proxy = httpProxy.createProxyServer({
  target: {
host: 'localhost',
port: 9009 // or whatever port your local http proxy listens on
  },
  ssl: {
key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
  }
}).listen(443); // HTTPS listener for the real server

میادش و اگر کاربر بخواد از طریق پروتکل http اتصال برقرار کنه هدایتش میکنه به سمت پروتکل https و کد زیر وقتی کاربر redirect شد به پروتکل https یکسری header که در بالا توضیح داده شد رو ست میکنه برای اتصال امن:

var server = http.createServer(function(req, res) {
  res.statusCode = 301;
  res.setHeader('Location', 'https://' + req.headers.host.split(':')[0] + req.url);
  res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
  return res.end();
});

server.listen(80);
آفلاین
user-avatar
نیما - ش ( 57339 تجربه )
7 ماه پیش
تخصص : برنامه نویس وب

@khosravi424
ممنونم محمد جان لطف کردید

برای ارسال پاسخ باید وارد سایت شوید