سكربت إيفاد المجاني لنقل الملفات عبر الاستضافات بواسطة بروتوكول FTP
بحمد الله انتهيت مؤخراً من برمجة وتصميم واجهة استخدام سكربت إيفاد لمساعدة أصحاب المواقع والاستضافات بنقل الملفات كبيرة الحجم بين السيرفرات بسهولة وسرعة.
السكربت عبارة عن ملف واحد بسيط يعمل بلغة PHP, وبتقنية jQuery.ajax لزيادة قابلة الاستخدام.
المميزات وطريقة التشغيل موضحة بالموقع.
أرحب بآراءكم ومقترحاتكم..
بروتكول FTP هو مصيبة المصائب من ناحية امنية فلا كلمة السر ولا البيانات يتم تشفيرها.
والبديل الأمن هو SSH و SFTP واستخدامه سهل للغاية:
scp src_file dst_host:dst_file
كما يمكنك استخدام puplickey للقيام بالنقل بشكل دوري دون الحاجة لاستخدام كلمة سر.
لم أقرأ الكود بشكل كامل و لم أجربه للآن. كنت من مبرمجي 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;
}
التعليقات