كيفية العثور على الحدود على العميل والخادم

كيف يبحث المختبر عادة عن الحدود في المجال؟ إذا كانت هناك قيود في المعارف التقليدية ، فإنها تختبرها. وإذا لم تكن كذلك؟ كل شيء واضح مع الحد السفلي - إنه حقل فارغ. كيف تجد القمة؟ أدخل سطرًا كبيرًا ولاحظ عدد الأحرف التي تم حفظها. وهذا كل شيء ...



ولكن إذا كان لدينا تطبيق خادم عميل ، فيمكن للمطور وضع حدود على كل رابط!







ويجب على المختبر التحقق منها جميعًا. لماذا ا؟ لأنه عندما نكرر نفس القيمة عدة مرات في أماكن مختلفة ، هناك فرصة كبيرة للخطأ. في نفس الوقت ، من السهل جدًا إزالة الحدود على العميل. ماذا يحدث إذا ذهب المستخدم حول الحدود على العميل؟ هل سيكسر موقعنا بخط كبير؟



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



المحتوى





1. حدود على العميل



الحد الاقصى للطول



يتم تحديد الحد على طول الخط على العميل في معلمة الطول الأقصى للحقل.



للعثور عليه ، تحتاج إلى:



  1. افتح لوحة المطور - اضغط على f12 .
  2. اضغط على الزر الموجود في أقصى اليسار وحرك المؤشر فوق عنصر على الصفحة.


هاهو! بالنسبة للحقل "name1" ، لدينا حد 10 أحرف.







انظر أيضًا:

ما يحتاج المختبر إلى معرفته عن لوحة المطور



التحقق من الحد - محاولة إدخال أكثر من 10 أحرف. ولكن تم إدخال 10 بالضبط ، ولم يعد يعطي المزيد. تكتب على لوحة المفاتيح ، والنظام ببساطة لا يستجيب:







هذه هي الحدود! الحدود على العميل ، وجدناها ، يا هلا.



لكن هذا لا يعني أنك بحاجة إلى التهدئة من أجل ذلك. يمكن إزالة الحدود على العميل بسهولة بالغة ، لذا من المهم التحقق من الخادم أيضًا. ويجب علينا ، كمختبرين ، التحقق مما إذا كانت هناك حماية على الخادم.



لذلك ، نقوم بإزالة الحدود. للقيام بذلك ، مباشرة في نموذج DOM (هذا هو هيكل صفحتنا ، الذي بحثنا عنه مع المفتش) ، نقوم بتصحيح الخط مع المعلمة. نعم ، إنها تتغير. انقر نقرًا مزدوجًا فوق معلمة الطول الأقصى وقم بتغيير القيمة. هاهو! يمكن الآن إدخال العديد من الأحرف أكثر من ذي قبل!







يرجى ملاحظة - يمكن إدخال الأحرف على الفور ، دون تحديث الصفحة. علاوة على ذلك ، إذا قمت بتحديث الصفحة ، فستفقد التغييرات. بعد كل شيء ، عند تحديث الصفحة ، يُطلب رمز HTML من الخادم ، ولا توجد تغييراتك. لذا العب بقدر ما تريد ، لا تخف من كسر شيء =) من



حيث المبدأ ، للتحقق من الحدود على الخادم ، يمكنك أولاً تغيير القيمة من 10 إلى 1000. ولكن إذا كنت تريد البحث بالضبط عن الحدود التكنولوجية ، فمن الأفضل اختيار قيمة أكبر. أو قم بإزالة المعلمة تمامًا. حدد وحذف!







عندما تجد عنصرًا في المفتش ، يمكنك رؤية أرقام أخرى غير الطول الأقصى . على سبيل المثال ، "data-max" أو "data-jsmax" أو أي شيء آخر. هل يمكن اعتبارها حدودًا؟ فقط إذا كان بإمكانك قراءة الكود وإيجاد معناه فيه.



يمكن للمطور كتابة HTML بالطريقة التي يحبها. يمكنه تحديد أي سمات للعلامة ، مع أي أسماء. ليس من الحقيقة على الإطلاق أن هذا سيكون نوعًا من الحدود.



يمكن أن يكون عنصر "إرث" ، أي أنه لا يتم معالجته أو استخدامه على الإطلاق. فقط نسيت أن تحذف. أو يمكن استخدامه لـ CSS - "إذا كان لدينا مثل هذه القيمة ومثل هذه ، فإننا نكتب باللون الأبيض ، إذا كان ذلك ، ثم الأسود.



وهنا الطول الأقصىسمة قياسية. وإذا تم تعيينه ، فإنه يقيد المستخدم - لا يمكن للمستخدم إدخال المزيد من الأحرف في حقل الإدخال أكثر من المحدد في الطول الأقصى . إذن هذه هي الحدود.



وكل شيء آخر - من الضروري التحقق مما إذا كان يحدنا بطريقة أو بأخرى. كيف تفحص؟ قم بتشغيل وحدة التحكم!







أخطاء في وحدة تحكم JS



عند اختبار الويب ، تأكد من تمكين وحدة التحكم:

F12 → لوحة التحكم




واحذرها من زاوية عيني. خلاف ذلك ، يمكنك تخطي الخطأ!



يحدث أن النظام لا يظهر المشكلة بأي شكل من الأشكال - لا شيء يتغير في الواجهة نفسها. إدخال البيانات في الحقول؟ لا يوجد شيء مميز باللون الأحمر ، ولكن يظهر خطأ في وحدة التحكم. هل نضغط على الزر؟ يتم تحميل التقرير ، يبدو أن كل شيء على ما يرام ، ولكن هناك خطأ في وحدة التحكم.



إذا ظهر خطأ في وحدة التحكم ، فهذا ليس طبيعيًا. ويجب التعامل مع هذا. قد يكون للخطأ تأثير متأخر ، أو ربما لم تلاحظ مظهره. على سبيل المثال ، عند تحميل تقرير ، تم حساب خلية واحدة بشكل غير صحيح ، لأنه لم يتمكن من تحميل البيانات ، التي كتبتها إلى وحدة التحكم. في الوقت نفسه ، تم تحميل التقرير ويبدو أن هناك بيانات بالداخل ، يبدو جيدًا. ولكن هناك خطأ.



لذا ، افتح وحدة التحكم وابدأ في ملء حقول المستخدم. على سبيل المثال ، ننقل البيانات إلى حقل "الهامستر". أزلنا الحدود على العميل (الحد الأقصى) وطباعتها. ثم نلاحظ ظهور خطأ في وحدة التحكم!







اتضح أن المطور وضع حماية إضافية في الميدان. بالإضافة إلى الطول الأقصى ، كتبت قيودًا في الشفرة. ربما كان يجب عرض هذه الرسالة في الواجهة بحيث يمكن للمستخدم أن يرى أن هناك خطأ ما ، لكن المطور أخطأ وأخرجها إلى وحدة التحكم.



في حالة المستخدمين ، لم يخلط المطور بأي شيء ، كان عليه عرض مثل هذه الرسالة في وحدة التحكم وفقًا لـ TK =)) لأن مهمتنا كانت ببساطة إظهار الموقف عندما يكون كل شيء على ما يرام في الواجهة ، ولكن هناك أخطاء في وحدة التحكم.



لكن أين الحدود؟ إذا حكمنا من خلال رسالة الخطأ "الحد الأقصى - 10". لذا فإن الحد هو 10 أحرف. نعم؟ ليس تين! الحدود هي عندما يكون لدينا سلوك نظام واحد قبله (لا أخطاء) ، وبعد آخر.







تذكر ، رسائل الخطأ هي رمز أيضًا. والذي يحتاج أيضًا إلى اختباره. يمكن للمطور ارتكاب خطأ وكتابة الرسالة بشكل غير صحيح. لذا دعونا نتحقق من مكان تغير استجابة النظام للمدخلات.



نبدأ في كتابة الأحرف ببطء ، ونراقب وحدة التحكم:



  • 10 - لا يوجد خطأ
  • 11 - لا يوجد خطأ
  • 12 خطأ!


نعم ، هذا يعني أن الحدود وفقًا لـ JS ليست 10 ، ولكن 11 حرفًا! حتى 11 عامًا ، كل شيء على ما يرام ، وبعد ذلك تبدأ الأخطاء في التدفق. وتبين أن رسالة الخطأ تكذب. لذا "الثقة ولكن تحقق" =)



هذه أيضًا حدود على العميل. لذا فإن حقل الهامستر له حدان على العميل:



  1. الطول الأقصى = 10 أحرف
  2. شبيبة = 11 حرفا


ولكن في حقل "name 1" حد واحد للعميل: maxlength = 10 أحرف. لا توجد أخطاء في وحدة التحكم عند إدخال الأحرف.







تغير السلوك



أود أن أؤكد مرة أخرى أن الحدود ليست فقط عندما يتم سكب الأخطاء في وحدة التحكم. يمكن أن يكون أيضًا تغييرًا في سلوك النظام مرئيًا للمستخدم.



على سبيل المثال ، قرر أحد المحللين أنه يجب ألا يقل طول الاسم عن 3 أحرف. لذلك ، عندما يضع المستخدم المؤشر على الحقل بالاسم ، يظهر إطار أحمر حوله وتظهر التسمية التوضيحية "يجب ألا يقل الاسم عن 3 أحرف" في الأسفل. لقد أدخلت 1-2 رسائل - لم يتغير شيء. دخل 3 - اختفى الإطار مع التوقيع. أو تغير الإطار من الأحمر إلى الأخضر.





لا توجد مثل هذه الحدود في المستخدمين ، لذلك التقطت للتو صورة من الإنترنت =)



هذا هو الحد الأدنى الذي تم إنشاؤه وفقًا لـ TOR. وتصنع على العميل. وبالمثل ، يمكنك ترتيب الحد العلوي - هل أدخلت أكثر من 10 أحرف؟ يظهر حد أحمر حول الحقل. لذا فهذه أيضًا حدود.







إجمالي الحدود على العميل



الحد على العميل هو قيمة السمة "maxlength" في حقل إدخال الأحرف. لا يمكنك إدخال أكثر من هذه القيمة ، فالنظام ببساطة لن يسمح لك بذلك.





يمكن إزالة هذا القيد بسهولة من خلال لوحة المطور - كيفية إزالة الطول الأقصى من جميع حقول النموذج .



قد لا يكون هذا الحد الوحيد. يمكن للمطور أيضًا كتابة الحدود في الشفرة. للعثور عليه ، نتبع النظام. إذا غيرت سلوكها ، وجدنا الحد:



  • تقوم بإدخال الرموز ويكون الحقل له حدود حمراء والتوقيع "طويل جدًا" - الحد! بالإضافة إلى "maxlength" ، أضاف المطور شيكًا
  • يمكنك إدخال الأحرف والأخطاء تظهر في وحدة التحكم - أيضًا حد!






2. حد الخادم



حد الخادم هو عدد الأحرف التي يمكننا تخزينها في النظام. من الناحية النظرية ، يجب أن تتزامن مع الحدود على العميل =) ولكن يمكن أن يحدث أي شيء. عندما نحتاج إلى كتابة قيمة واحدة في أماكن مختلفة ، هناك دائمًا فرصة لارتكاب خطأ.



نظرًا لأنه من السهل تجاوز الحدود على العميل ، فنحن بالتأكيد بحاجة إلى القيام بذلك أثناء الاختبار. ومعرفة ما إذا كانت هناك حدود على الخادم. وإذا كان الأمر كذلك ، أي منها.



دعنا نزيل الحد الأقصى = 10 قيود في المستخدمين من حقل "name1" ، وأدخل سلسلة طويلة هناك وحاول الحفظ. عند الحفظ ، يعطي النظام خطأ:







هذه هي الحدود على الخادم. أرسل العميل الطلب إلى الخادم ، الذي عمل عليه وأعاد ملاحظاته.



يبقى أن نفهم أين الحدود. بالطبع ، رسالة الخطأ تساعدنا في هذا: "الفعلي: 37 ، الحد الأقصى: 9"... من الناحية النظرية ، يحتوي الخادم على 9 أحرف كحد أقصى. لكننا نعلم بالفعل أنه يجب التحقق من ذلك!



نحن نفحص:



  • أدخل 9 أحرف ، احفظ - حفظ!
  • أدخل 10 أحرف - محفوظة.
  • أدخل 11 حرفًا - خطأ أثناء الحفظ.


هذا يعني أن الحد الحقيقي هو 10 أحرف على الخادم. يطابق الحدود على العميل ، هذا جيد.



الآن دعونا نتحقق من حقل الهامستر.







آها ، هنا الحدود مختلفة. في الرسالة 19 ، لكننا نتذكر أنه يكذب. نتحقق - الحد 20 حرفا. وعلى العميل كان 10 ، بأقصى طول! لذا فإن الحدود مختلفة.



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



  • الخادم - 10 أحرف
  • العميل - 20 حرفًا


ونتيجة لذلك ، يمكنك إدخال 20 حرفًا على العميل ، ولكن عند الحفظ ، نتلقى خطأ. ليست جيدة!



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



إذا أعطى النظام نفس الخطأ تمامًا كما كان من قبل ، فعندئذٍ تقريبًا. هذا يعني عدم وجود حدود تكنولوجية. حسنا، هذا جميل. الشيء الرئيسي هو أننا حاولنا البحث =)



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



أنظر أيضا:

الحدود التكنولوجية في النصائح للكيانات القانونية - إذا أدخلت 1000 حرف ، فلن يحدث شيء ، ولكن إذا كانت "الحرب والسلام" ...







3. الحدود في قاعدة البيانات



الحد في قاعدة البيانات هو عدد الأحرف التي تناسبها في قاعدة البيانات. عند إنشاء قاعدة ، نشير إلى أبعاد كل حقل. هنا مثال من الناس :



  • اللقب - فاركار (255)
  • الاسم - VARCHAR (100)
  • المدينة - VARCHAR (20)


هذا يعني أنه في حقل "الاسم الأخير" يمكننا تخزين 255 حرفًا ، في الاسم 100 ، وفي المدينة - 20. عند محاولة دفع سلسلة أكبر هناك ، سينشئ النظام خطأ من السلسلة "ORA-06502: PL / SQL: خطأ رقمي أو قيمة : المخزن المؤقت لسلسلة الأحرف صغير جدًا " .



من المهم أن نفهم أننا لن نرى حدود قاعدة البيانات إلا إذا لم يكن هناك حد على الخادم. لا يتغير مسار البحث للحدود:



  1. إزالة الحدود على العميل
  2. محشوة خط كبير
  3. تحاول الحفظ






لذلك ، إذا قام المطور بتعيين حد على الخادم ، فسوف نرى خطأ يتم التعامل معه - يتم عرضه بشكل جميل (أو ليس كذلك) ، مع نص ذي معنى تام. لأن المطور كتبه وهو يتعلق بتطبيقنا.







وإذا لم يكن هناك حد على الخادم ، فسوف نرى خطأ غير معالج. يمكن أن يكون خطأ مثل "ORA-06502: .." ، أو دفق رمز - مجموعة من الأحرف غير مفهومة للمستخدم العادي.







بالطبع ، قد يكون هناك موقف آخر - عندما يكون الحد على الخادم أكبر منه في قاعدة البيانات:



  • الخادم - 20 حرفًا
  • DB - 10 أحرف


ثم اتضح أن هذا موقف مضحك. نعم ، لقد قمنا بحماية أنفسنا من إدخال "الحرب والسلام". بإدخال 25 حرفًا أو 25 مليون حرف - تحصل على خطأ ذي معنى. ولكن إذا أدخلت 11 حرفًا ، إذن! تتبع مكدس كبير ومخيف في وضع ملء الشاشة.



لذلك ، عند اختبار صندوق أسود ، لا تحاول معرفة الكثير من الشخصيات في وقت واحد. جرب معنى ذا معنى أولاً. وإذا قمت بإزالة القيد المفروض على العميل ، فيجب تجربة قيمة الحدود له. كان الطول الأقصى = 10؟ جرب 11 حرفًا. ثم 55 مليوناً ، ثم 55 مليوناً.







الإجمالي: قائمة مرجعية للعثور على الحدود



في تطبيق خادم العميل ، يمكن أن تكون الحدود عند كل ارتباط. ومن الناحية المثالية يجب أن تتطابق. لكن علينا التحقق من ذلك!







قد يكون هناك المزيد من الحدود. على العميل ، يمكن للمطور فرض العديد من الحدود في وقت واحد: كل من الطول الأقصى ، وتغيير السلوك عند عبور خط معين (كود js).



قد يكون هناك حدود أقل. من سلسلة "دع المستخدم لا يدخل الغباء" ، ونتيجة لذلك ، لا توجد قيود على العميل والخادم. لكن بعد الحقول في قاعدة البيانات لا يزال قائما.



كيفية العثور على الحدود:



1. تحقق مما إذا كان الحقل له أقصى طول - هذا هو الحد الأكثر وضوحًا على العميل.



2. إزالة هذا القيد .



3. قم بتمكين وحدة تحكم JS (أين يمكننا الذهاب بدونها؟).



4. ابدأ في قيادة الشخصيات ، حوالي 50-100 في كل حقل. متابعة:



  • — ?
  • — ?


إذا تغير سلوك النظام ، أو ظهرت أخطاء في وحدة التحكم ، فهذه أيضًا الحدود على العميل. ولكن الآخر في كود شبيبة.



5. حاول حفظ هذه الأحرف 50-100. هذه هي الطريقة التي نبحث بها عن الحدود على الخادم و / أو في قاعدة البيانات.



إذا قام النظام بإنشاء خطأ ذي معنى مثل "الحقل طويل جدًا" - فهذا خطأ على الخادم. إذا لم تتم معالجة الخطأ ، فعلى الأرجح لا توجد حدود على الخادم ، ووجدت الحد في قاعدة البيانات.



يمكنك العثور على القيمة الدقيقة للحدود باستخدام طريقة القسمة الثنائية. حسنًا ، أو باستخدام سجلات / نص رسالة الخطأ.



6. أدخل 100 مليون رمز ( أدوات ) وحاول حفظها للعثور على الحدود التكنولوجية.



في سياق المقال ، قمنا بفحص الحقلين "name1" و "الهامستر" في نظام المستخدمين باستخدام قائمة التحقق هذه. النتائج:



حقل Name1:



  • الطول الأقصى - 10 أحرف
  • الخادم - 10 أحرف


حقل الهامستر:



  • الطول الأقصى - 10 أحرف
  • شبيبة - 11 حرفا
  • الخادم - 20 حرفًا


كل شيء جيد للاسم ، تتزامن الحدود. ولكن عند فحص "الهامستر" ، اكتشفنا مشكلتين في وقت واحد - الفرق بين حدود خادم العميل (10 و 20) ، بالإضافة إلى وجود خطأ في وحدة التحكم. يمكنك نشر البق!



All Articles