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

HTML and Javascript: getting full directory pathname using input file

本文关键字:路径名 获取 文件 Javascript 输入 HTML      更新时间:2023-09-26

根据我的研究,我知道我不能使用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代码:

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

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

这种行为并不是要规避的。即使您可以使用脚本/附加字段找到漏洞,该漏洞也可能在将来被删除。

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

向服务器透露用户的目录结构将是一个安全缺陷(想想Windows中的c:'users'tmedora;现在你知道我的用户名了)。此外,文件系统可以以不同的方式格式化路径,用户可以随意命名/重命名目录。我不确定服务器的完整路径的值是多少。除非您处于一个非常可控的环境中,否则您无法保证能够解析路径,更不用说指望它包含一致的信息了。

W3特别指出,包含完整路径是一个安全漏洞,并要求用户代理将字符串c:'fakepath'预先附加到文件路径中。

一些遗留用户代理实际上包括完整路径(安全漏洞)。

另请参阅IE提供完整路径,FF只提供文件名(或目录浏览)和如何从文件输入和许多其他文件中获取文件的完整路径。