file_munge_filename($filename, $extensions, $alerts = TRUE)
$filename参数是要被修改的文件名字。$extensions是一个字符串,包含了使用空格定界的文件扩展名。$alerts参数是一个布尔值,默认为TRUE,通过使用drupal_set_message()来警告用户,该文件的名字已被修改。返回的是修改后的文件名,向里面插入了下划线来禁止潜在的执行。
$extensions = variable_get('upload_extensions_default', 'jpg jpeg gif png txt
doc xls pdf ppt pps odt ods odp');
$filename = file_munge_filename($filename, $extensions, FALSE);
$filename 现在为 exploit.php_.txt.
通过在settings.php中将Drupal变量allow_insecure_uploads定义为1,你就可以阻止修改文件名了。但这通常是一个坏点子,因为它带来了安全隐患。
file_unmunge_filename($filename)
这个函数尝试撤销file_munge_filename()的影响,它将“_.”替换为了“.”:
$original = file_unmunge_filename('exploit.php_.txt);
$original 现在为 exploit.php.txt.
注意,如果在原始文件中,故意使用了“_.”,那么它也将被替换掉。
老葛的Drupal培训班 Think in Drupal