اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام علسكم ...

عندي في موقعي تحميل صور + التطبيق تحميل صوره شخصيه . 

كيف احمي موقعي من تحميل صوره تم وضع في شفرتها برمجيات خبيثه او تحميل اي برمجيات خبيثه ؟

وكذلك تطبيقي كيف اظمن مكان الصوره الشخصيه لا يوجه برمجيات خبيثه ؟

الموقع بلغه البايثون و التطبيق كوتلن و سويفت

تم التعديل في بواسطة Khaled Almousawi

Recommended Posts

  • 0
نشر (معدل)

و عليكم السلام 

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

بخصوص سؤالك و هو كيفية منع المستخدم من رفع برمجيات خبيثة بدل صورة ببساطة هذا يندرج تحت التحقق من البيانات أو data validation و الأكيد و الجدير بالذكر أن أي لغة برمجية تتيح و توفر لك أدوات من خلالها تستطيع التأكد أن ما رفعه المستخدم عبارة عن صورة بالفعل ليس التحقق من اللاحقة فقط ( jpg , png , .... ) بل التحقق من الملف كامل هل هو صورة أم لا فإن كان صورة تقوم بحفظه و إستخدامه في موقعك إن كان لا تخبر المستخدم أن ما قام برفعه ليس صورة 

أنا لا أستعمل اللغات التي ذكرتها لكن بإمكانك الإستعانة ب Google بكتابة : 

 Image validation in python 

و سيقترح عليك كيفية التحقق 

بالتوفيق

 

 

تم التعديل في بواسطة عبود سمير
  • 0
نشر

شكرا لك   لكن بعض الهكر يقوم بتحويل الصوره الى كود من خلال base64 picture

كما في هالموقع

 https://www.base64-image.de/#fallback

تستطيع تحويل الصور لكود و الاكواد لصوره مره اخرى

قد يدخل الهكر شفرته الى شفره الصوره و اعاده تحويلها الى صوره بامتداد jpg مثلا و رفعها للموقع 

يتعرف عليها الموقع كصوره لكنها محتويه لبرمجه خبيثه

ما الحل ؟

ارجو ان تكون فهمتني

  • 0
نشر

و عليكم السلام 

يمكن أيضا التحقق من الصورة و هي على هيئة base64 

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

  • 1
نشر

مرحبا 
أنا أستخدم إطار العمل laravel الخاص بلغة php و عند عملية التحقق من صورة أستعمل الكود التالي
 

<?php

// ....

public function store(Request $request)
{

  $request->validate([
      'image' =>  'required|image|mimes:jpeg,png,jpg,gif|max:2048'
  ]);
  
  // ....
	
}

هذا بإستعمال validation image الموجودة في الإطار 
لكن لارافيل يتيح لنا إنشاء custom validation خاص بنا بهذا الشكل مثلا 
 

<?php

Validator::extend('is_png',function($attribute, $value, $params, $validator) {
    $image = base64_decode($value);
    $f = finfo_open();
    $result = finfo_buffer($f, $image, FILEINFO_MIME_TYPE);
    return $result == 'image/png';
});

و بعدها يمكننا استعماله بهذا الشكل
 

<?php

// ....

public function store(Request $request)
{

  $request->validate([
      'image' =>  'required|is_png'
  ]);
	
  // ....
}

ستجد أشياء مماثلة لما تبحث عنه باللغة التي تريدها لأن مطورين اللغة يطورون بإستمرار على اللغة و يضيفون أشياء جديدة 
بالتوفيق

  • 1
نشر

السلام عليكم @Khaled Almousawi

يمكنك الحماية من الإختراق أو الثغرات المشابه لما ذكرت ببساطة من خلال منع الفنكشنز المسؤولة عن فك التشفير أو تنفيذ الأكواد الخبيثة على موقعك حيث يتم تشفير المحتوى الخبيث عن طريق تشفير base 64 وتستخدم الفنكشن eval (وهي المسؤولة عن هذا النوع من الثغرات)لتشغيل ذلك النص وهو عبارة عن أكواد خبيثة ,لمنع ذلك من الأساس الحل هو تعطيل تلك الفنكشن في إستضافتك أو السيرفر الخاص بك من خلال إضافة الكونفجريشن التالي إلى ملف php.ini الخاص بإستضافتك وسيعطل عمل تلك الأكواد 

allow_url_fopen = off
allow_url_include = off 
disable_functions = "apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode"

حيث هذه الفنكشنز معروفة بثغراتها 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...