मेरे previous question के बाद एएसपीनेट का डिफ़ॉल्ट पृष्ठ क्या है। आईएसपोस्टबैक कार्यान्वयन सुरक्षित है (यह नहीं है; इसे फिक्र किया जा सकता है ... HTTP क्रिया को पोस्ट भी नहीं होना चाहिए!), मैं सोच रहा था; निश्चित रूप से इसे लागू करने के लिए एक बेहतर तरीका होना चाहिए? क्या हम एक पेज के साथ आ सकते हैं। आईएसपोस्टबैक कार्यान्वयन, जब यह सच है, यह इंगित करने के लिए लगभग गारंटी है कि पृष्ठ एक वास्तविक एएसपीनेट पोस्टबैक है? यह महत्वपूर्ण है कि कोई व्यक्ति केवल एक बार सुरक्षा जांच करना चाहता है (जैसे उपयोगकर्ता की भूमिका के आधार पर कुछ सामग्री दिखाई दे रही है), और यह केवल तभी करना चाहती है जब हम एएसपीनेट पोस्टबैक से निपट नहीं रहे हों ।पेज.इसपोस्टबैक का एक सुरक्षित कार्यान्वयन?
ऐसा करने के तरीके के रूप में मेरा पहला विचार एक संपत्ति में जाँच कोड लागू करने के लिए कर रहे हैं, इसलिए मैं Page_Load
अंदर कुछ इस तरह लिख सकते हैं:
if (!_isPostBack)
{
// Do security check
if (userIsNotAuthorized)
{
btnViewReports.Visible = false;
btnEditDetails.Visible = false;
// etc.
}
}
वहाँ एक रास्ता सुरक्षित रूप से _isPostBack
लागू करने के लिए है? संभवतः व्यूस्टेट में कुछ संग्रहीत करना जो नकली नकली करने के लिए जेरी-रिग के लिए कठिन या असंभव होगा? एक यादृच्छिक स्ट्रिंग?
आप के बारे में सुरक्षा के संदर्भ में "लगभग गारंटी" पूछ रहे हैं? इसका कोई अर्थ नही बन रहा है। यह या तो सुरक्षित है, या यह नहीं है। के रूप में अच्छी तरह से – jalf
सुरक्षित नहीं, मेरा मतलब है कि संदर्भ RSA एन्क्रिप्शन लगभग सुरक्षित 'है में लगभग गारंटी' "लगभग" एक ही है; सैद्धांतिक रूप से यह क्रूर-मजबूर हो सकता है या आप 'भाग्य' कर सकते हैं और किसी की कुंजी का अनुमान लगा सकते हैं, लेकिन यह अविश्वसनीय रूप से असंभव या मुश्किल है। – Jez
क्लाइंट से आने वाले _anything_ पर भरोसा करने का कोई तरीका नहीं है। बस अपने तर्क को फिर से काम करें, आपके पास सत्र वस्तु है। –