16

سكربت إيفاد المجاني لنقل الملفات عبر الاستضافات بواسطة بروتوكول FTP


12

لم أقرأ الكود بشكل كامل و لم أجربه للآن. كنت من مبرمجي PHP لكن تركتها :)

بشكل سريع رأيت :

function create_password($len) { //دالة توليد كلمة المرور, وتستخدم أيضاً في توليد مفتاح تشفير الجلسة
$a =     array('a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','~','!','@','#','$','%','^','&','*','(',')','-','=','+','_','{','}','|','<','>','?',',','.','/',';','[',']');
    shuffle($a);
    return substr(implode($a), 0, $len);
}

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

بلغة الرياضيات، إذا طول الكلمة السرية المرغوبة هو 12 حرف.

  • عدد كلمات السر التي قد تنتجها دالتك (كل حرف يتكرر مرة واحد فقط) هو 98373462462399553228800

  • عدد كلمات السر التي قد تنتجها دالة تكرر الحروف : 215671155821681003462656

الدالة الأخرى لديها أكثر من ضعفي عدد مُخرجات دالتك.

تم التحديث للتالي لزيادة العشوائية والـ Performance:

function create_password($len) { //دالة توليد كلمة المرور, وتستخدم أيضاً في توليد مفتاح تشفير الجلسة
$a = array('a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','~','!','@','#','$','%','^','&','*','(',')','-','=','+','_','{','}','|','<','>','?',',','.','/',';','[',']');
$pwd = '';
for ($i = 0; $i < $len; $i++){
    $pwd .= $a[rand(0, 87)];
}
if (strength($pwd) < 4) return create_password($len);
else return $pwd;
}

ممتاز, سأعمل على معالجة ذلك في أقرب وقت ممكن إن شاء الله تعالى.

بارك الله فيكم..

تم التحديث:

function strength($pwd) { //دالة تقدير قوة كلمة المرور. النتيجة: من 0 إلى 5
    $score = 0;
    if (strlen($pwd) < 4) {return $score;}
    if (strlen($pwd) >= 8) {$score++;}
    if (strlen($pwd) >= 10) {$score++;}
    if (preg_match('/[a-z]/', $pwd) && preg_match('/[A-Z]/', $pwd)) {$score++;}
    if (preg_match('/[0-9]/', $pwd)) {$score++;}
    if (preg_match('/[\'\/~`\!@#\$£%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/', $pwd)) {$score++;}
    return($score);
}

function create_password($len) { //دالة توليد كلمة المرور, وتستخدم أيضاً في توليد مفتاح تشفير الجلسة
    $a = array('a','b','c','d','e','f','g','h','i','j','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','~','!','@','#','$','%','^','&','*','(',')','-','=','+','_','{','}','|','<','>','?',',','.','/',';','[',']');
    $pwd = '';
for ($i = 0; $i < $len; $i++){
    shuffle($a);
    $pwd .= $a[0];
}
if (strength($pwd) < 4) return create_password($len);
else return $pwd;
}