到目前为止,我有一个jQuery解决方案,以防止右键单击图像和任何可能出现的"上下文菜单"允许文件下载:
$("img").each(function () {
$(this).contextmenu(null, function () {
/* preventing the "context menu" that appears after a right-click,
* or whatever other possible way through the keyboard: */
return false;
});
$(this).click(function (e) {
if (e.button === 2) {
// preventing right-click:
return false;
}
});
});
用户可能仍然右键单击页面的任何其他部分,查看源代码,然后按照惯例通过img src
访问该文件。
App_Data
文件夹? ( ...当时发出404错误
尝试访问App_Data/Images/foobar.jpg
)Web.config
? ( ......没有做任何事情):
<location path="Content/Images">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
那么有可能以某种方式混淆源代码中显示的URL吗?
答案 0 :(得分:1)
简短的回答并不容易,如果您在HTML文档中将其发送到浏览器,则该文件必须是可访问的,并且用户将能够检索它。如果图像非常重要,你可以使用flash画廊或java applet,但是当你谈论大众访问时,它们都有自己的问题。 Flash没有在手机和Java小程序上运行被视为安全风险。
现在,如果你试图变得疯狂,你可以创建一个动态创建URL的机制,只提供一次但这需要你让每个IMG URL调用数据库来存储,然后通过创建自己的文件发送者路由。对不起,这可能不太清楚我在沙发上的电话打字:)。
这种方法并不是完整的证据,因为浏览器会缓存所有内容,所以如果有人想要它足够糟糕,他们就会得到它。如果你只是试图让它变得更难,那么普通人就不会这样做。
最后要考虑的是这样的任何行动都可能对seo不利。您不希望Google在他们抓取的每张图片上获得404。
答案 1 :(得分:0)
你有没有考虑过使用Generic Handler来完成这项工作?这样您就不需要将图像存储在用户可访问的位置。 以下是我在asp.net c#中使用的一些例子:
http://www.binaryintellect.net/articles/859d32c8-945d-4e5d-8c89-775388598f62.aspx http://www.intstrings.com/ramivemula/asp-net/how-to-download-files-from-server-to-client-using-a-generic-handler/
我知道线程已经老了,但我希望这会有所帮助。