النتائج 1 إلى 12 من 12

الموضوع: فقط لمحترفي ال CGI البيرل (فقططططططططط)

  1. #1
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    مرحبا بكم يا محترفين
    أود أن أطرح إستفسار أرقني جدا ولم أجد له حل
    لنفترض أن لديك أي ملف CGI أو PL
    مهما كانت وظيفتة
    وتريد أن تضع في بداية الملف فورم يطالب بكلمة مرور واسم مستخدم فكيف السبيل الى ذلك
    لا اريد ان يكون الفورم خارجي او ملف CGI أخر
    بل اريد أن أضع داخل الكود الذي أملكة كود إضافي (لا اعرفة)
    يطلب كلمة المرور واسم المستخدم لاي تطبقيق موجود

    فهل يمكنكم مساعدتي بمعرفة هذا الكود الذي يعمل على كل الملفات التي عندي CGI أوPL طبعا الاحقتان لنفس الشيئ


    تحياتي





    beshoo غير متواجد حالياً


  2. #2
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    شباب
    الله يخليكم
    help





    beshoo غير متواجد حالياً

  3. #3


    عزيزي انني لست من المحترفين ولكنني اردت التطفل عليكم بهذا الكود الذي اتمنى ان ينال رضاك :

    كود:
    #!/usr/bin/perl
    
    #قم بتغيير قيم الثلاث متغيرات التالية فقط
    $this_file_name='test.cgi';   #اسم المستند الذي ستضع فيه هذا الكود
    $user_name='admin';           #اسم المستخدم
    $pass_word='desert';          # كلمة المرور
    
    ##############################################################
    if ($ENV{'QUERY_STRING'}) {$namevalues = $ENV{'QUERY_STRING'};}
    else {read(STDIN, $input, $ENV{'CONTENT_LENGTH'});}
          @pairs = split(/&/, $input);
         foreach $pair (@pairs) {
         ($name, $value) = split(/=/, $pair);
         $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
         $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
         $value =~ s/<([^>]|\n)*>//g;
         $FORM{$name} = $value;
        }
    print "Content-type: text/html\n\n";
    if ($FORM{'IN'}) {
    $u_name=$FORM{'user_name'};
    $p_word=$FORM{'pass_word'};
    &ver
    }
    else{&getuser;}
    sub getuser{
    print "<html dir='rtl'>\n";
    print "<FORM ACTION='$this_file_name' METHOD=POST>\n";
    print "<DIV ALIGN=\"center\">\n";
    print "اسم المستخدم :<INPUT TYPE=\"text\" NAME=\"user_name\" SIZE=15 MAXLENGTH=20><BR>\n";
    print "كلمة المرور :<INPUT TYPE=\"password\" NAME=\"pass_word\" SIZE=15 MAXLENGTH=20><BR>\n";
    print "<INPUT TYPE=\"submit\" NAME=\"IN\" VALUE=\"دخول\"></DIV>\n";
    print "</FORM>\n";
    exit;
     }
    sub ver{
     if($u_name ne $user_name or $p_word ne $pass_word ){
      print "<center><h2>خطأ...في اسم المستخدم أو كلمة المرور</h2></center>\n";
      exit;
      }
         }
    ######################### بعد هذا السطر سيتم تنفيذ البرنامج ##############
    print "<center><h2>لقد نجحت <br> يمكنك ازالة هذا السطر</h2></center>\n";






    __________________
    هل زرتم
    شبكة صحراء العرب
    للحصول على مختلف سكريبتات البيرل و الاي اس بي العربية مجانا
    مستشار غير متواجد حالياً

  4. #4
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    شكرا لك والله لسا ما جربته لكن قريت الكود وانت داااااااااااااااااااهية

    قال مو محترف
    مممممممم شيخ المحترفين

    شكرا لك





    beshoo غير متواجد حالياً

  5. #5
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    انت رائع
    كانت النتيجة ساحقة
    بس مشكلة صغيرة
    انه في راس الصفحة تظهر عبارة المتغير
    Content-type: text/html
    طبعا تظهر بعد شاشة الدخول اي فوق البرنامج خاصتي

    وهناك مشكلة ايضا اكتشفتها
    انه لما تريد تشغيل اي شيء بالبرنامج بعد شاشة الدخول
    تظهر من جديد شاشة الدخول وتلغي اي امر قمت به
    فما الحل برايك
    لا ادري
    بصراحة هذة الشغلة مزعجة
    هل من حل؟

    انا ضعيف في ال perl





    beshoo غير متواجد حالياً

  6. #6


    عزيزي هذا امر متوقع

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





    __________________
    هل زرتم
    شبكة صحراء العرب
    للحصول على مختلف سكريبتات البيرل و الاي اس بي العربية مجانا
    مستشار غير متواجد حالياً

  7. #7


    واذا اردنا ان نطور البرنامج قليلا
    بحيث لا تخرج شاشة الدخول الا اذا كتبنا
    test.cgi?action=login
    وسوف يرسل البيانات الى action آخر اسمه مثلا check

    فما التعديل المطلوب ؟؟؟؟؟









    __________________
    * سبحان الله وبحمده سبحان الله العظيم *
    محبوب ياسين غير متواجد حالياً

  8. #8


    السلام عليكم
    أعتقد ان مشكلة طباعة Content-type ....
    هو أنك أضفت الكود إلى سكربت مكتوب به تلك العبارة سابقا

    أنا طورت بعض الأشياء بكود المستشار
    مثلا ، لن تحتاج إلى كتابة اسم الملف ، و جعلته يعيد طباعة النموذج إذا كانت كلمة المرور و/أو اسم المستخدم خاطئة
    ________________
    إذا اردت ان تضيف الكود إلى سكربت جاهز ، اضف هذا المقطع من الكود :

    كود:
    $user_name='admin'; #اسم المستخدم 
    $pass_word='desert'; # كلمة المرور 
    
    ############################################################## 
    read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
    @pairs = split(/&/, $input); 
    foreach $pair (@pairs) { 
    ($name, $value) = split(/=/, $pair); 
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
    $value =~ s/<([^>]|\n)*>//g; 
    $FORM{$name} = $value; 
    }
    if ($ENV{'QUERY_STRING'} eq "action=check") { 
    $u_name=$FORM{'user_name'}; 
    $p_word=$FORM{'pass_word'}; 
    &ver 
    } 
    else { &getuser;} 
    sub getuser{ 
    print "<html dir='rtl'>\n"; 
    print "<FORM ACTION=\"?action=check\" METHOD=POST>\n"; 
    print "<DIV ALIGN=\"center\">\n"; 
    print "اسم المستخدم :<INPUT TYPE=\"text\" NAME=\"user_name\" SIZE=15 MAXLENGTH=20><BR>\n"; 
    print "كلمة المرور :<INPUT TYPE=\"password\" NAME=\"pass_word\" SIZE=15 MAXLENGTH=20><BR>\n"; 
    print "<INPUT TYPE=\"submit\" NAME=\"IN\" VALUE=\"دخول\"></DIV>\n"; 
    print "</FORM>\n"; 
    exit;
    } 
    sub ver{ 
    if($u_name ne $user_name or $p_word ne $pass_word ){ 
    print "<center><h2>خطأ...في اسم المستخدم أو كلمة المرور</h2></center>\n"; 
    
    &getuser;
    exit; 
    } 
    } 
    ######################### بعد هذا السطر سيتم تنفيذ البرنامج ############## 
    print "<center><h2>اسم المستخدم وكلمة المرور صحيحتان .... شكرا لك</h2></center>\n";
    أما إذا اردت ان تضيف ملف مستقل ، أنشئ ملف بهذا الكود
    كود:
    #!/usr/bin/perl 
    
    #قم بتغيير قيم الثلاث متغيرات التالية فقط 
    
    $user_name='admin'; #اسم المستخدم 
    $pass_word='desert'; # كلمة المرور 
    
    ############################################################## 
    read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
    @pairs = split(/&/, $input); 
    foreach $pair (@pairs) { 
    ($name, $value) = split(/=/, $pair); 
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
    $value =~ s/<([^>]|\n)*>//g; 
    $FORM{$name} = $value; 
    }
    print "Content-type: text/html\n\n"; 
    if ($ENV{'QUERY_STRING'} eq "action=check") { 
    $u_name=$FORM{'user_name'}; 
    $p_word=$FORM{'pass_word'}; 
    &ver 
    } 
    else { &getuser;} 
    sub getuser{ 
    print "<html dir='rtl'>\n"; 
    print "<FORM ACTION=\"?action=check\" METHOD=POST>\n"; 
    print "<DIV ALIGN=\"center\">\n"; 
    print "اسم المستخدم :<INPUT TYPE=\"text\" NAME=\"user_name\" SIZE=15 MAXLENGTH=20><BR>\n"; 
    print "كلمة المرور :<INPUT TYPE=\"password\" NAME=\"pass_word\" SIZE=15 MAXLENGTH=20><BR>\n"; 
    print "<INPUT TYPE=\"submit\" NAME=\"IN\" VALUE=\"دخول\"></DIV>\n"; 
    print "</FORM>\n"; 
    exit;
    } 
    sub ver{ 
    if($u_name ne $user_name or $p_word ne $pass_word ){ 
    print "<center><h2>خطأ...في اسم المستخدم أو كلمة المرور</h2></center>\n"; 
    
    &getuser;
    exit; 
    } 
    } 
    ######################### بعد هذا السطر سيتم تنفيذ البرنامج ############## 
    print "<center><h2>اسم المستخدم وكلمة المرور صحيحتان .... شكرا لك</h2></center>\n";

    أخبرني بالنتائج

    أخي محبوب ياسين ، إذا أردت التعديلات ، فهي موجودة في هذا الملف :
    http://www.kwakeb.net/perl.txt

    الوطواط





    __________________
    The Programmer .. C.A.P Programmer
    C.A.P Programmer غير متواجد حالياً

  9. #9
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    أخي الوطواط

    شكرا جزيلا على المداخلة اللطيفة

    لكن بقيت المشكلة ذاتها
    هي كالتالي تفصيلا:

    وضعنا الكود الاول في ملف CGI كامل
    نفذنا الملف على السيرفر
    ظهرت شاشة الدخول وهذة خطوة جيدة
    كتبتالكلمة السرية واسم المستخدم
    دخلت الى البرنامج ومها كان البرنامج ممتاز الى الان

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





    beshoo غير متواجد حالياً

  10. #10
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


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

    انا اقوم ببساطة بالتعامل مع السكريبت بشكل عادي وبضغط اي زر بالفورم لكن تظهر الشاشة مجددا
    فمالعمل؟

    اطن انه يجب تخزين الباسورد مؤقتا بالكوكيز
    وفي حال الخروج من السكريبت يتم حذفها
    لكي يتاكد عند الانعاش من وجودها والله اعلم

    ننتظر المحترفين وطواط ومستشار والجمييييييييييييييييييييييع





    beshoo غير متواجد حالياً

  11. #11


    السلام عليكم

    شكرا اخي C.A.P Programmer على تعاونك والحقيقة اضافاتك قيمة .

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

    وهنا نحن نعمل كمثل طبيب يعالج مريضا غير مرئي والحل الامثل ان تضع الكود هنا او ترسله الي او الى الآخ C.A.P Programmer حتى يتم التعديل عليه مباشرة ومن ثم فحصه والتاكد من عمله .


    ولك خالص تحياتي واعتذر لك لعدم جدوى الكود الذي وضعته لك ولكن آمل ان يستطيع احد المحترفين حل المشكلة .





    __________________
    هل زرتم
    شبكة صحراء العرب
    للحصول على مختلف سكريبتات البيرل و الاي اس بي العربية مجانا
    مستشار غير متواجد حالياً

  12. #12
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    صدق ظني بكون الموضوع يتبناه المحترفين فقط
    اخي الكريم انا وهنا يكمن بيت القصيد
    مريض غير موجود
    أي أنه ما اريدة هو كود يوضع مع اي سكريبت كانت
    وانا طرحت مثال ولم اقصد التحديد
    بالمناسبة لماذا لا تنجح طريقة ال .htaccess
    في ملفات المتواجدة في ال CGI-BIN ??????

    واتمنى من الشباب حل المعضلة





    beshoo غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

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