السلام عليكم
اخواني من فترة كنت ابحث عن الطريقة الي تخليني استخدم طريقة عمل صورة عشوائية قبل التسجيل مثلا تظهر للمستخدم ويدخل الرقم الموجود فيها في المكان المخصص له واذا لم تتوافق المعلومات المدخله مع الموجوده في الصورة فلا يسمح له بالاستمرار
مثل الموجوده في المنتديات او بعض المنتديات عند التسجيل او مثل الموجوده في الهوت ميل او الياهوو
والحمد لله بعد بحث في المنتديات والنت قدرت احصل الطريقة الي تسمح لك بعمل هذا بال ASP.NET
قبل ان ابدأ بشرح الطريقة اذكر فقط الفائده من هذه الصورة ولماذا تم استخدامها وابتكار هذه الطريقة
يكمن خطر القيام بعمليات غير شرعيه على الموقع في الصفحات التي تسمح للزوار بالاتصال مع قاعدة البيانات او الاتصال مع ملفات الموقع من انشاء او تعديل او حذف وغيره دون تسجيل الدخول او التسجيل في الموقع --- يعني في المناطق التي تكون مفتوحه للزوار والتي يمكن لهم من خلال الاضافة على الموقع او التعديل او الحذف مثل سجل الزوار او صفحة التسجيل في الموقع
حيث يمكن لمبرمج محترف ان يقوم بتصميم برنامج او سكربت ليقوم بالعمل على هذه المناطق بشكل اّلي مثلا بدلا من دخولي لصفحة التسجيل في الموقع يقوم هذا البرنامج بالدخول لها والتسجيل فيها بدلا من قيامي بهذا بشكل يدوي -- وعندما نتكلم عن برنامج فاننا نتكلم عن امكانية تنفيذ الالف الاوامر والاكواد البرمجية في ثانية واحده يعني سرعته اعلى من سرعة الانسان بكثير فلو انت انتهيت عملية تسجيل واحده خلال دقيقتين فهو خلال ثانية واحده ممكن ينهي عشرين عملية تسجيل وهنا يكمن الخطر من تصميم مثل هذه البرامج واستخدامها لتعبئة قواعد البيانات وعمل ضغط كبير عليها
لست متأكده من المعلومة ولكن سبق من فترة طويلة ان قرأت في احد المنتديات او المجلات والله اعلم موضوع عن ان موقع الياهوو نفسه قد تم اسقاط سيرفراته بهذه الطريقة وعلى اثرها تم ابتكار صورة التحقق هذه (ماني متأكد من المعلومة)
ومثال على احد المواقع التابع لاحد الاخوة في سوالف سوفت والذي عانا من هذه المشكلة في احد مواقعه في هذا الموضوع وفيه ردود جيده من الشباب في سوالف ممكن ان تستفيد منها بخصوص هذا الموضوع
http://www.swalif.net/softs/showthread.php?t=161316
عندما نقف على مثل هذه المشكلة تاتي فائده صورة التحقق هذه حيث ان على من يرغب بالتسجيل ان يقوم بمشاهدة الصورة ويقوم بادخال الارقام الموجوده فيها في خانه مخصصه لذلك واذا لم تتوافق القيم المدخله مع الرقم المدخل في الخانه لا يسمح له بالاستمرار -- وتحويل الرقم العشوائي الي صورة يشبه الي حد ما التشفير باتجاه واحد -- اي يمكن لك ان تحول رقم الي صورة لكن لا يمكن لك استعادته من الصورة وتحويله الي رقم مرة اخرى (على حد علمي) -- اذا لا يوجد طريقة للاستمرار الا ان تشاهد الرقم بعينك ومن ثم تكتبه في المكان المخصص وهذا مالا يستطيع فعله اي برنامج والله اعلم
وطريقة عملها في ال asp.net هي التالية
اولا عمل صفحة جديده فارغة في الموقع تحتوي كود تحويل رقم عشوائي الي صورة نضعه في حدث تحميل الصفحة وفرضا ان اسمها هو Image.aspx , وهو التالي
كود:
'الكود الخاص بعملية انشاء صورة تحتوي على رقم عشوائي
Dim r As Random = New Random
Dim text As String = r.Next(1, 10000000).ToString
Dim imgNew As System.Drawing.Image = New Bitmap(1, 1)
Dim gc As Graphics = Graphics.FromImage(imgNew)
Dim font As Font = New Font("Verdana", 12, FontStyle.Underline)
Dim size As SizeF = gc.MeasureString(text, font)
Dim width As Integer = CType(size.Width, Integer) + 1
Dim height As Integer = CType(size.Height, Integer) + 1
imgNew = New Bitmap(width, height)
gc = Graphics.FromImage(imgNew)
gc.FillRectangle(Brushes.White, 0, 0, width, height)
gc.DrawString(text, font, Brushes.Black, 0, 0)
imgNew.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
'نهاية انشاء الصورة التي تحتوي على رقم عشوائي
'نقوم بتخزين الرقم العشوائي في الكوكيز
Response.Cookies("RandomImage").Value = text
في الصفحة التي نرغب بها باستخدام هذه الطريقة نقوم بوضع ادارة Image صورة على النموذج وفي حدث التحميل نقوم باستدعاء الصورة داخل هذه الادارة عن طريق استدعاء الصفحة التي بها الكود بهذه الطريقة في حدث تحميل صفحة التسجيل مثلا
كود:
'عرض الصورة التي تحتوي على الرقم العشوائي
Image1.ImageUrl = "Image.aspx"
عندما يتم عرض صفحة التسجيل يتم اسدعاء صفحة الصورة العشوائية ويتم توليد رقم عشوائي ومن ثم تحويلة الي صورة وعرض هذه الصورة في داخل اداة ال Image ومن ثم تخزينة في الكوكيز باسم RandomImage
الان في حدث زر التسجيل داخل الموقع نقوم باستدعاء الرقم المخزن في الكوكيز ونخزنه داخل متغير بهذه الطريقة
كود:
Dim RandomNumber As String
'جلب معلومات الرقم العشوائي من الكوكيز
If Not Request.Cookies("RandomImage") Is Nothing Then
RandomNumber = Server.HtmlEncode(Request.Cookies("RandomImage").Value)
End If
الان عندنا الرقم الموجود في الصورة داخل متغير اسمه RandomNumber
طبعا في التصميم نكون وضعنا ادارة تكست بوكس TextBox من اجل ان يدخل بها المستخدم الرقم الموجود في الصورة ولنفرض ان اسم الاداة هو RandomCodeB
قبل تنفيذ اي كود او اضافة او تعديل في قاعدة البيانات نتحقق اولا من ان الرقم الموجود في المتغير RandomNumber والذي جلبناه من ملف الكوكيز والذي هو نفسه الرقم الموجود في الصورة يتطابق مع الرقم المدخل من قبل المستخدم في داخل اداة RandomCodeB
فاذا كانا غير متطابقين لا نسمح له بتكلمة الحدث ونخرجه من الدالة ونعرض له رسالة الخطأ
كود:
'التحقق من ادخال المستخدم للرقم الموجود في الصورة بشكل صحيح
If RandomCodeB.Text <> RandomNumber Then
ErrorLabel.Text = "خطأ ! تأكد من ادخالك للرقم الموجود في صورة التحقق بشكل صحيح"
RandomCodeB.Text = Nothing
Exit Sub
End If
واخيرا اتمنى اني قدرت اشرح بشكل جيد الموضوع ولو في اي اسالة انا موجود اذا قدرت اجاوب مارح اقصر ابدا ان شاء الله
ملاحظة :- الشرح اعلاه على ال asp.net باستخدام ال vb.net
للي يستخدم السي شارب يمكنه استخدام هذا الموقع لتحويل الكود
http://www.developerfusion.co.uk/uti...btocsharp.aspx
مصدر كود التحويل من رقم عشوائي لصورة كنت سالت عنه في هذا الموضوع وجتني الاجابه هناك في منتدى ال asp.net
http://forums.asp.net/thread/1316771.aspx
اما المشاكل الي كنت اواجهها في الكود فكانت بسبب اني كنت اقوم بجلب الكود من الكوكيز في حدث تحميل الصفحة في صفحة التسجيل يعني كان يتغير الرقم مرة ثانيه ويرجع يجيبه وهكذا يكون جاب الرقم الخطأ -- اما الطريقة الي فوق فهي الصحيحة ان شاء الله تعالى
في امان الله وحفظة