限制文件上传中的文件类型
Restrict File type in File Upload
我在 Drupal 9 中创建了一个 Webform,我正在使用类型文档字段的文件上传字段。我们在设置中添加了仅接受 pdf、doc、docx 文件的条件。但是,用户可以使用漏洞利用脚本上传 php 文件。但是在服务器上,我们检查了上传的 php 文件是否以扩展名 txt 保存。
例如用户上传test.php文件,在服务器上保存为test.php.txt文件。
有没有办法限制用户上传 php 个文件?
谢谢,
阿克谢夏尔马
您可以尝试在自定义模块中创建表单验证。
示例:
在你的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') );
}
}
}
我在 Drupal 9 中创建了一个 Webform,我正在使用类型文档字段的文件上传字段。我们在设置中添加了仅接受 pdf、doc、docx 文件的条件。但是,用户可以使用漏洞利用脚本上传 php 文件。但是在服务器上,我们检查了上传的 php 文件是否以扩展名 txt 保存。
例如用户上传test.php文件,在服务器上保存为test.php.txt文件。
有没有办法限制用户上传 php 个文件?
谢谢, 阿克谢夏尔马
您可以尝试在自定义模块中创建表单验证。 示例:
在你的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') );
}
}
}