با سلام و درود، تو دو سه تا مطلب آخر بلاگ در مورد کوکی ها بیشتر دارم صحبت می کنم و امیدوارم بتونم اکثر مطالب حوزه کوکی رو داخل بلاگ پوشش بدم تا امید به خدا بلاگ یه مرجع خوبی در مورد کوکی ها باشه:)
بریم سراغ اصل مطلب،
HttpOnly Flag در کوکی چیست؟
پرچم کوکی HttpOnly اغلب به کوکی هایی اضافه می شود که ممکن است حاوی اطلاعات حساس در مورد کاربر باشد.اساساً، این نوع flag به سرور میگوید که اطلاعات کوکیهای موجود در اسکریپتهای تعبیهشده (embedded scripts) را فاش نکند.HttpOnly همچنین به سرور میگوید که اطلاعات موجود در کوکی های پرچم دار نباید به خارج از سرور منتقل شوند. این پرچم مخصوصاً در محافظت از اطلاعات ایمن که ممکن است در طول حمله جعل درخواست بین سایتی (cross-site request forgery) (CSRF) به خطر بیفتد یا اگر نقصی در کد وجود داشته باشد که باعث ایجاد اسکریپت بین سایتی (cross-site request forgery) (XSS) می شود، مهم است. هر دوی این موارد می تواند منجر به افشای اطلاعات کاربر به هکرها شود.
افزودن Httponly در مواقعی مفید است که کوکی ها ممکن است به طور تصادفی یا به طور عمد برای شخص ثالث- third-party آشکار شوند، اما چندین مورد استثنا قابل توجه وجود داره که نباید از پرچم های HttpOnly استفاده کرد. در ادامه به این می پردازیم که چه زمانی باید و چه زمانی نباید از پرچم HttpOnly استفاده کرد.
به صورت خلاصه، پرچم HttpOnly منجر می شود تا کوکی ها برای اسکریپت های سمت کلاینت مانند جاوا اسکریپت، غیرقابل دسترسی باشند. این کوکی ها را فقط می توان توسط سروری که request را پردازش می کند ویرایش کرد.
پس دلیل اینکه CookieScript نمیتونه کوکی هاییی که پرچم HttpOnly دارند رو کنترل کنه فهمیدیم.
چه زمانی از HttpOnly استفاده کنیم؟
بیاید فرض کنیم وبسایت شما منحصرا از HTTPS استفاده می کند. شما هم احتمالاً میخواهید از پرچمهای کوکی «ایمن – secure» علاوه بر پرچم HttpOnly استفاده کنید.
تا زمانی که از جاوا اسکریپت برای جمع آوری داده های ترافیک سایت یا تجزیه و تحلیل استفاده نمی کنید، می توانید از HttpOnly برای ایجاد یک لایه حفاظتی اضافی برای وب سایت خود استفاده کنید. برچسبهای HttpOnly مخصوصاً در وبسایتهایی مفید هستند که – به دلایلی – هنوز از پروتکل HTTPS استفاده نکردهاند.
نکته: به طور خلاصه، بهنگام استفاده از Https وبا جفت تگ های HttpOnly و securte همواره خطا خواهید داشت.مگر اینکه بدونید جاوا اسکریپت شما برای عملکرد صحیح به دسترسی به کوکی نیاز دارد.
چه زمانی از HttpOnly استفاده نکنیم؟
پرچم HttpOnly راهی مطمئن برای ایمن سازی تمام اطلاعات کوکی ها در یک وب سایت به نظر می رسد، پس چرا به سادگی هر کوکی را به عنوان HttpOnly برچسب گذاری نکنید؟ برخلاف آنچه که ایده خوبی به نظر می رسد، استثناهای قابل توجهی وجود دارد که در مواردی که نباید به محافظت از این پرچم کوکی HTTP تکیه کنید وجود دارد – و همه آنها به جاوا اسکریپت مربوط می شوند.
- استفاده از جاوااسکریپت برای تجزیه و تحلیل.اگر جاوا اسکریپت را در سایت خود اجرا می کنید و framework برای کار به کوکی ها متکی است، وجود یک پرچم HttpOnly در کد شما در واقع می تواند امنیت شما را شکسته و احتمالاً باعث ایجاد مشکلاتی در جاوا اسکریپت شود.
- استفاده از جاوااسکریپت برای وضعیت صفحه (page state). اگر وضعیت صفحه وب سایت شما برای تفسیر و اصلاح مقادیر کوکی شما به جاوا اسکریپت بستگی دارد، این نوع معماری سایت ممکن است با HttpOnly کار نکند و می تواند سایت را برای جعل درخواست های متقابل سایت (CSRF) باز کند. در مواردی مانند این، باید پرچم HttpOnly را کنار بگذارید و به سادگی از پرچم secure با پروتکل HTTPS استفاده کنید.