HTML和Javascript:使用输入文件获取完整目录路径名

时间:2012-03-29 03:25:56

标签: javascript html

从我的研究中,我知道我无法使用HTML输入文件来获取目录路径名。但是,我尝试了另一种方法,将输入文件的值存储到隐藏字段中,并将存储的值传递给后端代码以进行进一步处理。 Javascript代码:

<script type="text/javascript">
function folder_address()
{
    var address=document.getElementById('folder_address');
    var folder=document.getElementById('folder');
    folder.value=address.value;
}
</script>

HTML code:

<input type="file" id="folder_address" name="folder_address" />
<input type="hidden" id="folder" name="folder" />

但是,我仍然将folder.value作为我选择的文件,而不是文件的完整目录路径名。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

这种行为并不意味着被规避。即使您可以使用脚本/其他字段找到漏洞,将来也可能会删除漏洞。

我强烈建议一种不依赖于知道用户选择的本地路径的设计。

向服务器显示用户的目录结构是一个安全漏洞(在Windows中考虑c:\users\tmedora;现在您知道我的用户名)。此外,文件系统可以以不同方式格式化路径,用户可以根据需要自由命名/重命名目录。我不确定完整路径对服务器有什么价值。除非您处于极端受控的环境中,否则您无法保证您甚至可以解析路径,更不用说依赖它包含一致的信息。

包含完整路径的W3 specifically states是一个安全漏洞,需要用户代理将字符串c:\fakepath\添加到文件路径中。

  

一些旧版用户代理实际上包含了完整路径(这是一个   安全漏洞)。

另见IE Gives full path, FF gives only filename (or directory browse)How to get the full path of the file from a file input和其他许多人。