Ограничить тип файла при загрузке файла

Я создал веб-форму в Drupal 9, и я использую поле загрузки файла типа поля документа. Мы добавили условие в настройку, чтобы принимать только файлы pdf, doc, docx. Однако пользователь может загружать файлы php, используя скрипт эксплойта. Однако на сервере мы проверили, что загруженные файлы php сохраняются с расширением txt.

Например, пользователь загрузил файл test.php, он сохраняется как файл test.php.txt на сервере.

Есть ли способ ограничить пользователя загрузкой файлов php?

Спасибо, Акшай Шарма

1 ответ

Решение

Вы можете попробовать создать проверку своей формы в настраиваемом модуле.Пример:

В вашем custom.module:

 function custom_module_form_alter(&$form, FormStateInterface $form_state, $form_id) {
      if ($form_id == 'webform_submission_yourformid_add_form') {
        $form['#validate'][] = 'yourcustommodule_form_validate';     
      }
  }




  public function yourcustommodule_form_validate(array &$form, FormStateInterface $form_state) {
   
      $extensions= array('doc','docx','pdf');

      $files  = $form_state->getValue('yourfilefield');
      foreach($files["uploaded_files"] as $item => $val){
          $filename=  $val["filename"];
          $ext = pathinfo($filename, PATHINFO_EXTENSION);
          if (!in_array($ext, $extensions)) {
            $form_state->setErrorByName('yourfilefield', t('Error') );
          }
      }
}
Другие вопросы по тегам