Jquery 如何在ASP.NET MVC中混淆URL以防止图像下载?

Jquery 如何在ASP.NET MVC中混淆URL以防止图像下载?,jquery,asp.net-mvc,image,download,Jquery,Asp.net Mvc,Image,Download,到目前为止,我有一个jQuery解决方案来防止右键单击图像和任何可能出现的允许文件下载的“上下文菜单”: 不过,用户仍然可以右键单击页面的任何其他部分,查看源代码,然后像往常一样通过img src访问该文件。 我不想禁用对整个文档的右键单击,在我的谷歌搜索中,这些似乎是可能的: 将图像放入App\u Data文件夹?(…当 尝试访问类似于App\u Data/Images/foobar.jpg的内容 将类似的内容添加到Web.config?(…什么也不做): <loca


到目前为止,我有一个jQuery解决方案来防止右键单击图像和任何可能出现的允许文件下载的“上下文菜单”:


不过,用户仍然可以右键单击页面的任何其他部分,查看源代码,然后像往常一样通过
img src
访问该文件。

我不想禁用对整个文档的右键单击,在我的谷歌搜索中,这些似乎是可能的:

  • 将图像放入
    App\u Data
    文件夹?(…当
    尝试访问类似于
    App\u Data/Images/foobar.jpg的内容
  • 将类似的内容添加到
    Web.config
    ?(…什么也不做):

  <location path="Content/Images">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>


那么,是否有可能以某种方式混淆显示在源代码中的URL?

简短的答案并不容易,如果您以HTML文档的形式将其发送到浏览器,则该文件必须是可访问的,并且用户将能够检索到它。如果图像非常重要,您可以使用flash gallery或java小程序,但在谈到大规模访问时,两者都有各自的问题。Flash不能在手机上运行,java小程序被视为安全隐患

现在,如果你想发疯,你可以创建一种机制,动态创建URL并只提供一次服务,但这需要你让每个IMG URL调用数据库来存储,然后通过路由创建你自己的文件发送者。抱歉,这可能不清楚,我正在沙发上的电话中键入此内容:)

这种方法不是完全可靠的,因为浏览器会缓存所有内容,所以如果有人想要它,他们会得到它。如果你只是想让它变得更难,这样普通人就不会这样做了,那么这是可以做到的


最后一点要考虑的是,任何这样的行为都可能对SEO不利。你不希望谷歌在他们爬行的每一个图像上都能获得404s。

< P>你有没有考虑过使用通用处理器来完成这项工作?这样,您就不需要将图像存储在用户可以访问的地方。 下面是我在asp.net c#中使用的一些示例:


我知道这条线索已经过时了,但我希望这能有所帮助。

感谢@DrewGoldsberry的洞察——这是一个很好的观点,说明这样的行为可能对SEO有害。出于这个原因,我认为我应该让这些图片可以公开访问,并更多地关注版权问题。我必须研究一下你描述的这些方法!
  <location path="Content/Images">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>