Javascript 使用<;时如何在地址栏中隐藏URL;a href>;
我在一个使用ASP MVC 5的项目中的文件夹中存储了几个文档。查看文档的HTML链接为:Javascript 使用<;时如何在地址栏中隐藏URL;a href>;,javascript,jquery,asp.net,angularjs,asp.net-mvc,Javascript,Jquery,Asp.net,Angularjs,Asp.net Mvc,我在一个使用ASP MVC 5的项目中的文件夹中存储了几个文档。查看文档的HTML链接为: <a ng-href="~/download/document/{{vm.document}}"><a/> 然后此URL将在地址栏中看到它: http://localhost:20870/download/document/d47a1c96-e4d7-423b-aa83-76537c392ad2.pdf 为安全起见,我不希望此URL可见 亲爱的url隐藏不会有什么好处,因为我
<a ng-href="~/download/document/{{vm.document}}"><a/>
然后此URL将在地址栏中看到它:
http://localhost:20870/download/document/d47a1c96-e4d7-423b-aa83-76537c392ad2.pdf
为安全起见,我不希望此URL可见 亲爱的url隐藏不会有什么好处,因为我们可以通过按网络选项卡上的F12来了解请求的详细信息
以更好的方式保护您的文档。我认为基于角色的安全性将很好,并根据请求提供对文档的访问。正如其他人所指出的,URL应该是公共的。没有任何合理的方法可以对用户完全隐藏它们 但是,您可以使用MVC控制对资源(如物理文件)的访问 默认情况下,MVC不提供物理文件,IIS直接提供物理文件。假设您的文件实际位于
/download/document/
虚拟目录中,首先阻止通过根web.config
文件直接访问该文件夹
<location path="download/document">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
上述内容将允许任何登录用户访问URLhttp://localhost:20870/securedownload/document/d47a1c96-e4d7-423b-aa83-76537c392ad2.pdf
重要提示:切勿在URL中使用文件的真实位置。IIS倾向于使用MVC控制器操作的物理位置,因此,如果物理文件存在,则会出现错误。您可能不希望用户知道文件的物理位置
您可以使用以下命令进一步将其限制为特定的用户角色:
[Authorize(Roles = "Admin,SuperUser")]
或者,您可以将[Authorize]
属性子类化,并使用其他方式保护文件,例如,通过HTTP头传递哈希代码
另一种可能的选择是:不使用保存在磁盘上的物理文件。这确保了文件没有可访问的物理路径-只能通过控制器操作方法访问。它还确保您永远不必清理一次性使用PDF文件的目录
参考资料:
- 您应该使用此
如果它不在url中,它将不会传递给该方法!您可以将htaccessignore放在您的文档文件夹中,这样就没有人可以单独访问它,下载才能正常工作。URL必须是公开的。如果您想限制对文件的访问,那么听起来您需要使用令牌系统,服务器在重定向到要下载的文件之前读取提供的令牌并检查其是否有效。如果是关于安全的,用户可以随时查看页面源以查找机密URL。您的意思是当鼠标滑过pdf链接时,它会出现在底部的状态栏中吗?
[Authorize(Roles = "Admin,SuperUser")]