听说这叫防盗链?怎么实现呢?

wowxxrl 2009-12-14 05:55:53
比如我网站的图片.jpg ,css.css ,js.js 等这些东西不想被人直接用地址给下载走,怎么办呢?

听说这叫防盗链?怎么实现呢?

百度和Google了很久都没有想要的答案。

有没有大哥做过呢?不装逼,我需要代码~。告诉我思路我也是不行的。

我得研究代码撒。。。

万分感谢。!




另外,为什么百度首页的代码那么难看呢?不止百度,比如淘宝等。
好像为了节省文件大小以提高下载速度?

少了点儿换行和空格,能提高很多速度吗??求解~~~thx
...全文
336 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
only_lonely 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mjay0210 的回复:]
给你两个解决方案 我们的公司网站就是这种方法!
  1. 你确定 你们主页上需要保密的东西 都不是直接写个Src那么简单,而是通过后台一般处理程序 得到的。这样他们盗无可盗。
  2. 写一个全局配置程序,那么如果别人引用这个图片链接,你的全局配置里验证 发送请求的页面非本公司网站,或者 客户端没有你们的Cookie 那么就发送给他一个  表示他是盗链的图片。

  3.这是外送的。
  给图片压上水印 。 盗呗!依然是通过一般处理程序得到,所有的图片只要获取的时候都压一层 有公司logo的Png在上面。

[/Quote]
nice job
tianmao111 2009-12-15
  • 打赏
  • 举报
回复
public partial class Test_ShowPhoto : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
//连接数据库
string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";
string strSql = "select * from piclist";
SqlConnection conn = new SqlConnection(ConnStr);
conn.Open();

SqlCommand cmd=new SqlCommand(strSql,conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Response.ContentType = "application/octet-stream";
Response.BinaryWrite((Byte[])reader["pic"]);
Response.Write("successful");
}
reader.Close();
conn.Close();
Response.End();
}
}
}
用代码直接显示图片,而不是src 方式,看他怎么盗。
tianmao111 2009-12-14
  • 打赏
  • 举报
回复
其实真没什么办法的,盗链可以解决,但是盗图片就没办法了,

你可以在客户端做个javascript脚本里边取图片,再检查他的内存里有没有你的图片的地址,有的话,就再他下载前清空了,

其实可以检查输出流,如果流里存在你的图片,那你就可以禁止了哦
lijing3333 2009-12-14
  • 打赏
  • 举报
回复
打个水印还好些.... 就怕盗的少.... 百度排名都省了
whb147 2009-12-14
  • 打赏
  • 举报
回复
中国人的仿造能力很强的
只要看得到,就能做出来
三碗猪脚 2009-12-14
  • 打赏
  • 举报
回复
同意19楼的,要想完全保护不太好办!
tkscascor 2009-12-14
  • 打赏
  • 举报
回复
namespace aaaa
{
class bbbb
{}

}

<httpHandlers>
<add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="aaaa.bbbb"/>
</httpHandlers>
wowxxrl 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xupeihuagudulei 的回复:]
没搞过,
不过很有兴趣
看到很多人都是用httphandler自己写了一个再去webconfig里再配置。
[/Quote]

嗯嗯嗯。也就是12L 那个。不过最后web.config里面需要写命名空间。

我真不知道自己的命名空间是什么啊。。。
whb147 2009-12-14
  • 打赏
  • 举报
回复
人家会抓屏,再切
或者整个页面另存为
再或者,去临时文件夹里找,都能找得到
只要能看到,就能偷得到
除非你的网站是不想给人看的
happy664618843 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wuyq11 的回复:]
防盗链一般是两种, 检查上一页的地址.
利用资源本身找出被包含的网页地址
public class ImgProtectHadler:IHttpHandler
    {
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
        public void ProcessRequest(HttpContext context)
        {
            string path = context.Request.PhysicalPath;
            string serverHost = context.Request.Url.Host;
            Uri u = context.Request.UrlReferrer;
            if (u == null || u.Host.ToLower() != serverHost.ToLower())
            {
                context.Response.WriteFile("~/a.gif");
            }
            else
            {
                context.Response.WriteFile(path);
            }
        }

    }
}
<httpHandlers>
  <add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="ImgProtect.ImgProtectHadler"/>
  </httpHandlers>

[/Quote]
对 就是这个
xupeihuagudulei 2009-12-14
  • 打赏
  • 举报
回复
没搞过,
不过很有兴趣
看到很多人都是用httphandler自己写了一个再去webconfig里再配置。
tkscascor 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chinabinl 的回复:]
恩 12 L  已经全说了

  不知道命名空间是什么 也可以  网站不是有吗?
[/Quote]
没有命名空间。 就自己加上去。。
tkscascor 2009-12-14
  • 打赏
  • 举报
回复
12 l 是对滴。
其实原理跟其他页面一样的。
假如iis , 我跟你要页面,需要咨询你的意见, 给还是不给,
一般图片是直接下载的,不通过iis的验证,加上上面的代码,
就是用户在用户请求图片的时候也验证一下
还有一些操作, 是在iis 配置的, 添加设定触发iis验证请求的文件后缀格式。
不好意思, 家里电脑没装iis 。。。
wish_foreverlove 2009-12-14
  • 打赏
  • 举报
回复
upup
chinabinl 2009-12-14
  • 打赏
  • 举报
回复
恩 12 L 已经全说了

不知道命名空间是什么 也可以 网站不是有吗?
wuyq11 2009-12-14
  • 打赏
  • 举报
回复
防盗链一般是两种, 检查上一页的地址.
利用资源本身找出被包含的网页地址
public class ImgProtectHadler:IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
string path = context.Request.PhysicalPath;
string serverHost = context.Request.Url.Host;
Uri u = context.Request.UrlReferrer;
if (u == null || u.Host.ToLower() != serverHost.ToLower())
{
context.Response.WriteFile("~/a.gif");
}
else
{
context.Response.WriteFile(path);
}
}

}
}
<httpHandlers>
<add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="ImgProtect.ImgProtectHadler"/>
</httpHandlers>
asdfa23rdadsdfa 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nosuchtracter 的回复:]
对LZ的头像感兴趣
[/Quote]
up
mjay0210 2009-12-14
  • 打赏
  • 举报
回复
通过一般处理程序 获得图片 只存在于 浏览器当时的内存里,是不会有缓存文件的。当然写多了网站再次打开速度会不理想!
mjay0210 2009-12-14
  • 打赏
  • 举报
回复
给你两个解决方案 我们的公司网站就是这种方法!
1. 你确定 你们主页上需要保密的东西 都不是直接写个Src那么简单,而是通过后台一般处理程序 得到的。这样他们盗无可盗。
2. 写一个全局配置程序,那么如果别人引用这个图片链接,你的全局配置里验证 发送请求的页面非本公司网站,或者 客户端没有你们的Cookie 那么就发送给他一个 表示他是盗链的图片。

3.这是外送的。
给图片压上水印 。 盗呗!依然是通过一般处理程序得到,所有的图片只要获取的时候都压一层 有公司logo的Png在上面。
mngzilin 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wowxxrl 的回复:]
3L 够狠。。不过如果右键查看源代码呢

4L。。 <add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="ImgProtect.ImgProtectHadler"/>

我新建的网站,不是web项目,不知道命名空间是什么啊。。。

5L、 有这么麻烦吗。。
[/Quote]

其实没有绝对能防的。即使你不然下载,别人浏览网站后临时文件夹中还是有的。
加载更多回复(7)

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧