سؤال

إنني أتطلع إلى طريقة تمرير البيانات من صفحة إلى أخرى بأمان وتجنب أنه من الممكن العبث.


  • أفضل طريقة لحلها ، هي حفظ البيانات الحساسة على خادم DB.
  • أو استخدام الجلسة على خادم DB.
  • أو أي طريقة تستمر البيانات على خادم DB.

والحقيقة هي بسبب الأداء لا أرغب في استخدام مثل هذه الأساليب.

لا أعرف ما إذا كان ما يلي طريقة آمنة ، لكنني أود اختباره. (لكنني لا أعرف ما إذا كان ذلك ممكنًا)

أرغب في حفظ البيانات الحساسة في ViewState في وضع التشفير .. for ex in tespage1.aspx واسترداد هذا من testPage2.aspx.

كيف يمكنني القيام بذلك ، وهل هو آمن؟

شكرا لك مقدما

هل كانت مفيدة؟

المحلول

قم بإنشاء فئة مخصصة للاحتفاظ ببياناتك الحساسة.

class myCustomeClass
{
    int id;
    string name;
    currency amount;

    '... properties to access

    '... custom methods

    '... etc.
}

إذا كنت بالفعل بجنون العظمة تتضمن طرقًا للتشفير/فك التشفير ... الآن ، قم بإعداد الحقول وخصائص البيانات. بعد ذلك ، تشفير (اختياري). ضع الشيء في ذاكرة التخزين المؤقت ...

Cache.Insert("MySensitiveData", myCustomClass, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);

أعد التوجيه إلى صفحتك الأخرى

في حدث page_load

MyCustomClass oSensitiveData;

if (!IsPostBack)
{
    oSensitiveData = (myCustomeClass)Cache["MySensitiveData"];
}

هذا كل شيء ، لديك بياناتك ، إذا قمت بتشفيرها ، فأنت بحاجة الآن إلى فك تشفيرها ...

هناك العديد من الطرق للقيام بذلك ، لكن هذا واحد يعمل بالنسبة لي مع مجموعات صغيرة نسبيًا من البيانات. إذا كنت تقوم بمجموعات كبيرة من البيانات ، فقد ترغب في استكشاف استخدام قاعدة بيانات مثل SQL Sever و MySQL و ETC ... لتكون بمثابة "ذاكرة تخزين مؤقت" للبيانات.

نصائح أخرى

يوصى دائمًا بالبيانات الحساسة ، يجب أن تكون في الخادم ليس مع العميل. أي شيء قمت بتضمينه في الصفحة هو التزام. نظرًا لأنك استبعدت جميع خيارات جانب الخادم ، يجب أن تكون ViewState أفضل رهان أعتقد بسبب تشفيرها. يمكنك أيضًا استخدام خاصية Page.EnableViewStateMac حتى يكون لها نقل آمن ViewState.

مشكلتان هنا ... واحد ، ViewState غير آمن. بشكل افتراضي ، إنه مجرد ترميز أساسي. احفظ هذه البيانات على الخادم ، الفترة. أي شيء آخر يسأل عن المتاعب. اثنان ، تضيع ViewState عندما تذهب إلى صفحة جديدة ، لسبب وجيه. هذه ليست كيفية تمرير البيانات من صفحة ASPX إلى أخرى.

بالإضافة إلى ذلك ، فإن اختيار ViewState Over Session لأسباب لا معنى له في معظم السيناريوهات. سيكون استخدام الجلسة inproc أو ذاكرة التخزين المؤقت أكثر كفاءة من ViewState.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top