北大青鳥電腦培訓(xùn):解決圖片被盜鏈接的問題?
現(xiàn)在網(wǎng)絡(luò)上經(jīng)常會(huì)有圖片被盜的情況,之前常見的艷照門等都是大家非常熟知了的,所了網(wǎng)絡(luò)信息安全非常的重要,為了確保個(gè)人隱私不被盜走,就要加緊掌握網(wǎng)絡(luò)安全知識(shí)了,今天我們鄭州北大青鳥校區(qū)給大家分享下解決圖片被盜鏈接問題。一、所有的image url都跟上密文,比如你在綁定頁面image url時(shí)可以這么做,以下是MVC示例。
ImageController
string path="/Content/";
string imgName = "girl.jpg";
long ticks=DateTime.Now.Ticks;
//使用當(dāng)前時(shí)間刻度作為待加密對(duì)象
string encryptKey = ticks.ToString();
//使用自定義對(duì)稱算法加密
byte[] data = SymmetricEncryptionUtility
.EncryptData
(
encryptKey,
ShareData.SymmetricKeyFile
);
//使加密后的數(shù)據(jù)轉(zhuǎn)換成base64碼
string encryptedImgName = Convert.ToBase64String(data);
string encryptedEncoding = HttpUtility.UrlEncode
(
encryptedImgName
);
//將加密后的密文存放在共享數(shù)據(jù)中
ShareData.KeyCollections.Add(encryptedImgName);
ViewData["imgUrl"] = string.Format
("{0}{1}?key={2}", path, imgName, encryptedEncoding);
二、自定義Handler.專用于處理圖片請求.此handler做這么幾件事,
1、獲得圖片請求的key,即上段代碼中的encryptedEncoding.沒有圖片key,那就哪里來送回哪里去.(友好點(diǎn).給個(gè)性感圖片送過去..)
2、應(yīng)該所有key都經(jīng)過對(duì)稱算法加密,so..解密先..
3、判斷請求是否來自本站.是本站流程進(jìn)4. 否則進(jìn)5
4、本站請求再做進(jìn)一步篩選.查看ShareData中是否有包含此key.(ShareData是自定義的.),存在圖片的key那么清除ShareData中此key然后正確返回請求圖片.不存在那么同步驟1一樣送回去..(做ShareData判斷是防止javascript 篡改request head信息)
5、不是來自本站的請求.可以提供自己的策略..我這里做的是30天鏈接過期.(因?yàn)榈谝欢未a中用時(shí)間刻度做加密..所以這里解密了很好判斷)
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//不是本站.檢查明文時(shí)間軸
{
long ticks;
if (long.TryParse(decryptedKey, out ticks))
{
TimeSpan ts = new TimeSpan
(
DateTime.Now.Ticks - ticks
);
//如果大于一個(gè)月
if (ts.TotalDays > 30)
{
//輸出鏈接過期
return;
}
}
}
//移除共享數(shù)據(jù)中key
ShareData.KeyCollections.Remove(decryptedKey);
response.ContentType = "image/"
+ Path.GetExtension(imagePath).ToLower();
response.WriteFile(imagePath);
}
因?yàn)槭亲远xHandler注意在config中注冊handler節(jié)點(diǎn)..至于配置節(jié)不知道什么意思..自己查查.
web.config
<httpHandlers> <add verb="*" path="*.gif" type=
"MvcApp.Handler.ImageHandler"/>
<add verb="GET" path="*.jpg" type="MvcApp.Handler.ImageHandler"/>
</httpHandlers>
以上就是圖片被盜鏈接的解決問題,掌握了這些知識(shí)就可以輕松確保自己個(gè)人信息的安全了,想要了解更多的網(wǎng)絡(luò)安全知識(shí)請鏈接:http://i3061.cn/wlaq/ 本文源自:http://i3061.cn/jsjl/ 轉(zhuǎn)載請注明出處!
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學(xué)習(xí)技巧、就業(yè)案例、招生詳情等問題,可以對(duì)在線咨詢老師進(jìn)行一對(duì)一問答!
推薦資訊
- 職場要加薪,但不要玩過火... 2012-10-13
- 初中畢業(yè)我的出路在哪里?一位學(xué)... 2012-10-13
- 在職人員適合學(xué)習(xí)北大青鳥課程嗎... 2013-03-17
- 高中畢業(yè)學(xué)什么技術(shù)比較好就業(yè)... 2021-03-27
- 鄭州北大青鳥翔天信鴿校區(qū)2018年... 2018-01-30
熱點(diǎn)資訊
- 電腦溫度多少是正常的情況呢?... 2018-09-07
- 四個(gè)策略及簡單的防護(hù)方法... 2018-09-07
- 對(duì)硬盤進(jìn)行雙分區(qū)有什么好處... 2018-09-07
- 文件加密的幾個(gè)簡單方法... 2018-09-07
- 計(jì)算機(jī)小技巧,80G硬盤巧變變成... 2018-09-07