北大青鸟电脑培训:解决图片被盗链接的问题?
现在网络上经常会有图片被盗的情况,之前常见的艳照门等都是大家非常熟知了的,所了网络信息安全非常的重要,为了确保个人隐私不被盗走,就要加紧掌握网络安全知识了,今天我们郑州北大青鸟校区给大家分享下解决图片被盗链接问题。一、所有的image url都跟上密文,比如你在绑定页面image url时可以这么做,以下是MVC示例。
ImageController
string path="/Content/";
string imgName = "girl.jpg";
long ticks=DateTime.Now.Ticks;
//使用当前时间刻度作为待加密对象
string encryptKey = ticks.ToString();
//使用自定义对称算法加密
byte[] data = SymmetricEncryptionUtility
.EncryptData
(
encryptKey,
ShareData.SymmetricKeyFile
);
//使加密后的数据转换成base64码
string encryptedImgName = Convert.ToBase64String(data);
string encryptedEncoding = HttpUtility.UrlEncode
(
encryptedImgName
);
//将加密后的密文存放在共享数据中
ShareData.KeyCollections.Add(encryptedImgName);
ViewData["imgUrl"] = string.Format
("{0}{1}?key={2}", path, imgName, encryptedEncoding);
二、自定义Handler.专用于处理图片请求.此handler做这么几件事,
1、获得图片请求的key,即上段代码中的encryptedEncoding.没有图片key,那就哪里来送回哪里去.(友好点.给个性感图片送过去..)
2、应该所有key都经过对称算法加密,so..解密先..
3、判断请求是否来自本站.是本站流程进4. 否则进5
4、本站请求再做进一步筛选.查看ShareData中是否有包含此key.(ShareData是自定义的.),存在图片的key那么清除ShareData中此key然后正确返回请求图片.不存在那么同步骤1一样送回去..(做ShareData判断是防止javascript 篡改request head信息)
5、不是来自本站的请求.可以提供自己的策略..我这里做的是30天链接过期.(因为第一段代码中用时间刻度做加密..所以这里解密了很好判断)
ImageHandler
public void ProcessRequest(HttpContext context)
{
HttpResponse response = context.Response;
HttpRequest request = context.Request;
string imgKey = request.QueryString["key"];
byte[] data = Convert.FromBase64String(imgKey);
string decryptedKey = SymmetricEncryptionUtility
.DecryptData
(
data,
ShareData.SymmetricKeyFile
);
//如果没有图片密钥就返回
if (imgKey == null) return;
string imagePath = null;
//检查请求是否来自外站
if (request.UrlReferrer != null)
{
if (String.Compare(
request.Url.Host,
request.UrlReferrer.Host,
true,
CultureInfo.InvariantCulture) == 0)
{
if (!ShareData.KeyCollections.Contains(imgKey))
return;
imagePath = request.PhysicalPath;
if (!File.Exists(imagePath))
{
response.StatusCode = 404;
return;
}
}
}
else//不是本站.检查明文时间轴
{
long ticks;
if (long.TryParse(decryptedKey, out ticks))
{
TimeSpan ts = new TimeSpan
(
DateTime.Now.Ticks - ticks
);
//如果大于一个月
if (ts.TotalDays > 30)
{
//输出链接过期
return;
}
}
}
//移除共享数据中key
ShareData.KeyCollections.Remove(decryptedKey);
response.ContentType = "image/"
+ Path.GetExtension(imagePath).ToLower();
response.WriteFile(imagePath);
}
因为是自定义Handler注意在config中注册handler节点..至于配置节不知道什么意思..自己查查.
web.config
<httpHandlers> <add verb="*" path="*.gif" type=
"MvcApp.Handler.ImageHandler"/>
<add verb="GET" path="*.jpg" type="MvcApp.Handler.ImageHandler"/>
</httpHandlers>
以上就是图片被盗链接的解决问题,掌握了这些知识就可以轻松确保自己个人信息的安全了,想要了解更多的网络安全知识请链接:http://www.hnbenet.com/wlaq/ 本文源自:http://www.hnbenet.com/jsjl/ 转载请注明出处!
本文由站河南北大青鸟校区整编而成,如需了解更多IT资讯类的文章、新闻、课程和学习技巧、就业案例、招生详情等问题,可以对在线咨询老师进行一对一问答!
推荐资讯
- 计算机专业毕业月薪能有多少呢... 2014-09-22
- 人的命不是天注定,北大青鸟改变... 2013-01-06
- 郑州北大青鸟就业颠覆以往就业难... 2012-10-13
- 郑州北大青鸟电脑学校都有哪些专... 2016-04-25
- 让你的手机立即拥有高端机的功能... 2012-10-13
热点资讯
- 电脑温度多少是正常的情况呢?... 2018-09-07
- 四个策略及简单的防护方法... 2018-09-07
- 对硬盘进行双分区有什么好处... 2018-09-07
- 文件加密的几个简单方法... 2018-09-07
- 计算机小技巧,80G硬盘巧变变成... 2018-09-07