هل من الآمن استخدام الطلب.
-
22-09-2019 - |
سؤال
هل من الآمن استخدام مثل هذا الرمز؟
Response.Cookies[cookieName].Path = Request.ApplicationPath + "/";
أريد أن أعرف عن جميع حالات الزاوية ، من فضلك ...
المحلول
باختصار ، لا ، إنها ليست آمنة. إن استخدام مسارات ملفات تعريف الارتباط محفوفة بالمشاكل لأنها حساسة للحالة في IE و Chrome ، ولكن ليس FF. هذا يعني أن أي عدم تطابق في قضية المسار سيحكم الأمور.
عند إنشاء ملف تعريف ارتباط ، إذا كان المسار الذي تحدده يختلف في حالة كتابته المستخدم ، فلن يقوم المتصفحات بتخزينه.
عند إرجاع المستخدم ، إذا كان المسار الذي يدخله يختلف في حالة من الرحلة الأولى ، فلن يقوم المتصفح بتزويد ملف تعريف الارتباط بالطلب.
أي المشكلات التي تسعى إلى حلها؟
نصائح أخرى
إذا كان تطبيقك يعمل في جذر المجال ، Request.ApplicationPath == "/"
. وبالتالي ، مع الكود الخاص بك ، سيكون مسار ملف تعريف الارتباط الخاص بك //
. يمكنك التفادي حول هذه المشكلة عن طريق القيام بذلك:
cookie.Path = Request.ApplicationPath;
if (cookie.Path.Length > 1) cookie.Path += '/';
مثل سوف يشير بشكل صحيح, ، سترغب في التأكد من أن تطبيقك يفرض غلافًا ثابتًا من عناوين URL (أي إعادة توجيه جميع الطلبات مع عناوين URL التي تحتوي على أحرف كبيرة إلى ما يعادلها).
بخلاف ذلك ، أعتقد أنك يجب أن تكون بخير في القيام بذلك. إذا كنت تريد أن تكون جميع ملفات تعريف الارتباط الخاصة بك "تطبيق تطبيق" ، ففكر في إنشاء مخصص IHttpModule
مع كود مثل هذا (أو تمديد global.asax.cs
):
private void Application_EndRequest(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
var cookiePath = app.Request.ApplicationPath;
if (cookiePath.Length > 1) cookiePath += '/';
foreach (string name in app.Response.Cookies.AllKeys)
{
var cookie = app.Response.Cookies[name];
cookie.Path = cookiePath;
}
}
لا ، إنها ليست آمنة ، للأسباب التي سيتم تحديدها.
لكن ... قد ترغب في توظيف هذه التقنية لتحقيق نيتك.