الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن طريقة حماية الروابط من سكيلو انجكشن

بدأه ورق خسرانه في 7 أبريل 2013 · 46 رد · 3,255 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

 السسلام عليكم ورحمة الله وبركاته

اخواني الاعضاء والمشرفين .. لدي استفسار عن طريقة حماية الرابط في حالة احتوائه على QueryString من سكيلو انجكشن  لانه عندما يقوم احد بوضع (') بعد QueryString يطلع خطاء مباشرة 

http://localhost:54158/RegLisence/Admins/Admin_Default.aspx?BranchID=2

 

==================

 

Input string was not in a correct format.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:



Line 7: If Not Page.IsPostBack Then Line 8: Line 9: Dim id_bracn As Integer = Request.QueryString("BranchID") Line 10: Dim chk As Integer = ob2.Get_CountREg_Day(id_bracn, DateTime.Now.Date) Line 11: If chk > 0 Then

-----------------------

والذي لاحظته في بعض المواقع asp.net انه عندما يتم اضافة هذه العلامة (') بعد QueryString

 لايحدث اي خطاء ويتم عرض البيانات من خلال QueryString دون التاثر بعلامة ( ' )  ياليت تفيودوني طريقة الحماية منها  وطريقة عرض البيانات  QueryString دون التاثر بـ ( ' ) 

#2

UP

#3

 اين الخبراء ؟ ارجو المساعدة في سؤالي اخواني المشرفين والاعضاء 

#4

استخدم التالي :

 

int BranchID = 0;

        if (Request.QueryString["BranchID"] != null)
        {
BranchID = int.Parse(Request.QueryString["BranchID"].ToString().Replace("'", ""));
        }

        if (BranchID > 3) Response.Write(BranchID);

تم تعديل هذه المشاركة بواسطة mamababadada في 10 أبريل 2013 في 18:47

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#5

  مشكور اخي العزيز على ردك للموضوع ولكن مازالت المشكلة قائمة عندما اقوم باضافة اي حرف بعد الكوري ستنرج يظهر نفس الخطاء   اريد انا عندما يقوم اي  شخص من اضافة اي شي بعد الكوري ستنرج يتم اهمالة  سواء الشرط او اي حرف او اي كلمة بعد الكوري سترنج 

ولدي استفسار بخصوص هذه الكود

 

 if (BranchID > 3) Response.Write(BranchID);

 ماذا تقصد فيه ؟

تم تعديل هذه المشاركة بواسطة ورق خسرانه في 11 أبريل 2013 في 01:15

#6

إذا كانت القيمه المطلوبه رقميه فعليك تحليل  BranchID  لتصفيتها من أي علامات او رموز غير رقميه .

 

اقتباس
 if (BranchID > 3) Response.Write(BranchID);

 ماذا تقصد فيه ؟

 

هنا فقط مثال عندما يتحقق الشرط يتم عرض قيمة BranchID في حال كانت قيمته أكبر من 3 

 

أو يمكنك إستخدام  Session  قبل استدعاء الصفحه المطلوب التعامل فيها مع محتوى BranchID 

Session["BranchID"]=3

تم تعديل هذه المشاركة بواسطة mamababadada في 11 أبريل 2013 في 12:38

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#7

 طيب اخي العزيز الكود الذي كتبته لي انت  يوم بتصفية العلامة ( ' ) هذه بس ..

وعندما اقوم باضافة حرف عربي او انجليزي او اي رمز اخر يعطيني نفس الخطاء ؟وانا اريد ان يقوم  الكود بتصفية كل  ماياتي بعد الكوري ستنرج 

#8

السلام عليكم ورحمة الله وبركاتة

 

تحية ظيبة وبعد...

 

أخي الكريم بعدما رأيت الخطأ التالي:

 

Line 7: If Not Page.IsPostBack Then Line 8: Line 9: Dim id_bracn As Integer = Request.QueryString("BranchID")

 

لاحظت أنك تستخدم متغير من نوع Integer و أنت تمرر له قيمة الـ query string  والتي سوف تكون ذات نوع string؟!. أذاً لابد أن تقوم بتحويل هذه القيمة إلى Integer عن طريق أستخدام :

 

Convert.ToInt32(value)

تنبيه: قيمة Value سوف تكون قيمة query string, أي  ما يقبال

 

Request.QueryString("BranchID")

 

 

اقتباس

والذي لاحظته في بعض المواقع asp.net انه عندما يتم اضافة هذه العلامة (') بعد QueryString

 لايحدث اي خطاء ويتم عرض البيانات من خلال QueryString دون التاثر بعلامة ( ' )  ياليت تفيودوني طريقة الحماية منها  وطريقة عرض البيانات  QueryString دون التاثر بـ ( ' )

 

تستطيع البحث في قوقل عن: Preventing SQL Injection in ASP.NET

 

وهذه بعض المواضيع يوجد بها شرح :

 

Preventing SQL Injection in ASP.NET

 

Tip/Trick: Guard Against SQL Injection Attacks

 

 

 

Good luck
 

تم تعديل هذه المشاركة بواسطة D a r K T o u c h في 12 أبريل 2013 في 09:38

My Latest

Hello Entity Framework Code First

--------------------

#9

 اخي العزيز مشكور على ردك .. بس انا استعمل البروسيجر والبرميترات من اجل الجماية  .. لكن عندما يكون رابط ماذا بوسعي ان افعل ؟ لاني لا استطيع ان استعمل برميتر او بروسيجر انا لدي Datalist وتقوم بعرض البيانات على حسب الكوري سترنج وقيمة الكوري سترنج رقمية من نوع integer وعندما يتم التلاعب فيها واضافة اي قيمة نصية يطلع الخطاء الذي فوق .. انا اريد عندما يتم اضافة اي شي بعد الكوري سترنج يتم اهماله او تصفيته 

#10
اقتباس

أو يمكنك إستخدام  Session  قبل استدعاء الصفحه المطلوب التعامل فيها مع محتوى BranchID 

Session["BranchID"]=3

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#11
mamababadada كتب:
اقتباس

 

أو يمكنك إستخدام  Session  قبل استدعاء الصفحه المطلوب التعامل فيها مع محتوى BranchID 

Session["BranchID"]=3

 اخي العزيز طيب لو اني قمت بتخزين الكوري سترنج في سيشن  هل اذا قمت بتغيير  الكوري سترنج في الرابط ؟ يعطيني الخطاء او سيبقى الكوري سترنج شغال طالما القيمة مخزنه في السيشن الى ان ينتهي السيشن ؟ ياليت توضح لي اكثر ولك جزيل الشكر

#12

عزيزي ارفق الصفحة الاولى والصفحة الثانية من مشروعك التي يتم فيها التعامل مع الكوري سترنج عشان أعدلك عليها وأعيدها لك

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#13

 هلا اخي هذه مثال فيه كوري سترنج لاني المشروع كبير فعملت صفحين فيهم كوري ستنرج رفعته لك على رابط http://www.up-00.com/dldLg092264.rar.html

تم تعديل هذه المشاركة بواسطة ورق خسرانه في 16 أبريل 2013 في 09:38

#14

ارفع على المنتدى الرابط فيه مشكله

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#15
mamababadada كتب:

ارفع على المنتدى الرابط فيه مشكله

 اخي العزيز لايوجد خيار رفع ملف عند الرد على موضوع سوف ارفع لك المثال مرة اخرى على رابط اخر 

http://www.gulfup.com/?CBKNYG

#16
اقتباس

 اخي العزيز لايوجد خيار رفع ملف عند الرد على موضوع سوف ارفع لك المثال مرة اخرى على رابط اخر

 

لو قمت بالرد بواسطة اختيار المحرر الكامل لوجدت خيار رفع الملفات .. لكن انت استخدمت مشاركة بجانب المحرر الكامل :P

 

عموما تم تحميل  الملف و سارجعه لك بعد التعديل

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#17

اها مشكور اخي العزيز على المعلومة 

تم تعديل هذه المشاركة بواسطة ورق خسرانه في 20 أبريل 2013 في 22:07

#18

UP

#19

تفضل هذا مثال أعددته لك من صفحتان يتم التنقل من الصفحة الاولى الى الثانية مع نقل القيمه بواسطة Session

mysession.zip

1

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#20

وهذا مثال لــ Server.Transfer  لنقل قيمة مربع نصي من الصفحة الاولى الى الصفحة الثانية

Server-Transfer.zip

1

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

#21

مششكور اخي العزيز على  الامثلة ... لكن اخي العزيز هذه ليس المطلوب ... بالنسبة للسيشن انا اعرف  طريقة استخدامة  لكن انا اريد كوري سترنج لاني اقوم بنقل القيمة اما عبر هيبر لينك او عبر تاج html 

<a> </a>

#22

السلام عليكم

ما فهمته انك تريد التأكد من ان المستخدم لم يقدم بتعديل ال Query String

 

أولا لا نستطيع منع المستخدم من تعديله و لكن يمكننا التأكد انه بالشكل المطلوب من ناحية ال Parameters  المطلوبة و قيمتها و ايضا من ناحية ال Secuirty

 

فمثلا لو تتوقع وجود Parameter باسم id و يساوي رقم صحيح مثل 5 فيمكن التأكد من وجود ال Parameter و النوع باستخدام التالي

 

//to hold the passed id value
int id;
//check if the id parameter is passed and
//its value type is integer using int.TryParse method
//and not less than 1, and
//hold it in variable id defined above
if(string.IsNullOrWhiteSpace(Request.QueryString["id"])
    || !int.TryParse(Request.QueryString["id"], out id)
    || id < 1)
    {
        // if you get here, then the passed id value is not valid
        //you can redirect the user to error page
    }
//if you are here, then the id value is valid
}

و في حالة وجود صلاحيات مختلفة حسب قيمة ال id و تخشي أن يصل المستخدم الي معلومات لا يجب ان يصل اليها عن طريق تغيير القيمة. استخدم ال id للتاكد من الصلاحية قبل عرض البيانات

 

لا انصحك بمحاولة تصحيح قيمة ال Parameter ان تم تغييرها بشكل غير صحيح من المستخدم. فقط ابلغه ان المدخلات غير صحيحه

تم تعديل هذه المشاركة بواسطة AhmedElbaz في 28 أبريل 2013 في 11:59

1
#23

 اخي العزيز 

AhmedElbaz

 الذي اريدة هو .. عندما يقوم الزائر بتغيير الكوري سترنج .. لايطلع لي خطاء هذه بالمقام الاول وتم حلها عن طريق وضع تري كاتش 

المقام الثاني الذي اريدة وهو ما لاحظته في كثير من مواقع asp.net  عندما يقوم شخص باضافة اي نص من نوع سترنج بعد الكوري سترنج يتم تجاهل النص المضاف الى الكوري سترنج ويتم عرض البيانات على اساس الكوري سترنج وكانه لم يتم التغيير عليه 

مثلاَ اذا كان id هو الكوري سترنج

page?id=2

وقام الزائر بعمل 

page?id=2'

or

page?id=2ssfsdfsd

or

any thing

 اريدة ان يتم عرض البيانات وكانه لم يتم التغيير على الكوري سترنج ويتم عرض البيانات حسب الكوري سترنج الذي هو id=2

------------------

 اخي 

AhmedElbaz 

انا لم اقول اني اريد ان امنع من التغيير فانا اعرف انه يستطيع التغيير 

#24

UP

#25
اقتباس

ما لاحظته في كثير من مواقع asp.net  عندما يقوم شخص باضافة اي نص من نوع سترنج بعد الكوري سترنج يتم تجاهل النص المضاف الى الكوري سترنج ويتم عرض البيانات على اساس الكوري سترنج وكانه لم يتم التغيير عليه

 

 

ممكن تضع لنا رابط واحد لأي من المواقع التي لاحظتها .

−1

Many of life’s failures are people who did not realize how close they were to success when they gave up

Thomas Edison

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…