为了确保保存在服务器上的上传文件的安全性和完整性,可以采用以下几种方法:
//检查文件类型 if($_FILES['file']['type'] != 'application/vnd.ms-excel' && $_FILES['file']['type'] != 'application/pdf'){ echo '只允许上传 .xlsx 或 pdf 文件'; exit; }
//检查上传的文件是否存在恶意代码 $filename = $_FILES['file']['tmp_name']; if (is_uploaded_file($filename)){ $file_content = file_get_contents($filename); if(preg_match("/\bexec\b/i",$file_content) || preg_match("/\bshell_exec\b/i",$file_content) || preg_match("/\bsystem\b/i",$file_content)){ echo '上传的文件包含恶意代码'; exit; } }
//加密上传的文件 $file_content = file_get_contents($_FILES['file']['tmp_name']); $key = '1234567890abcde'; $iv_size = openssl_cipher_iv_length('aes-128-cbc'); $iv = openssl_random_pseudo_bytes($iv_size); $ciphertext = openssl_encrypt($file_content, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv); $encrypted_content = $iv . $ciphertext;
//将加密后的文件保存到服务器中 file_put_contents('path/to/save/'.$_FILES['file']['name'], $encrypted_content);
通过以上三种方法的组合使用,可以更加有效地确保上传的 .xlsx 或 pdf 文件在保存到服务器中时的安全性和完整性。