如何解决在文件上传中限制文件类型
我已经在Drupal 9中创建了一个Webform,并且正在使用文档字段类型的File Upload Field。我们在设置中添加了条件,以仅接受pdf,doc,docx文件。但是,用户可以使用利用漏洞脚本上传php文件。但是,在服务器上,我们检查了上传的php文件是否以扩展名txt保存。
例如,用户上传了test.php文件,该文件另存为服务器上的test.php.txt文件。
有没有一种方法可以限制用户上传php文件?
谢谢, 阿克沙玛(Akshay Sharma)
解决方法
您可以尝试在自定义模块中创建表单验证。 示例:
在您的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') );
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。