成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

奇思妙想之用JS給圖片加口令

安全 應(yīng)用安全
本文展示一種用JS給圖片加口令的方法,可以將任意圖片轉(zhuǎn)化為html,輸入正確的口令才能打開查看圖片。

[[261556]]

本文展示一種用JS給圖片加口令的方法,可以將任意圖片轉(zhuǎn)化為html,輸入正確的口令才能打開查看圖片。

效果如下:

jpg2html_demo.gif

效果說明

  • 它最終只有一個文件。并非一張圖片和一個html,不是在html中引用圖片,而是將圖片放入了html。
  • 打開時,必須輸入的正確口令,口令錯誤則不能打開。
  • 口令不能被獲取!查看html源碼無法找到口令,雖然口令確實是存放在文件中。

直入主題,下面介紹此效果的技術(shù)原理和實現(xiàn)方法:

技術(shù)原理

  • 將圖片轉(zhuǎn)化為base64字符串,這樣可以直接將字符串寫入html,而無需引用外部的圖片。
  • 打開時要求輸入口令、口令校驗都由JS實現(xiàn)。
  • 口令隱藏,不能通過查看網(wǎng)頁源碼獲取。

實現(xiàn)方法

1. 將圖片放入網(wǎng)頁的方法非常簡單,只要將圖片轉(zhuǎn)為base64編碼字符即可,轉(zhuǎn)換使用canvas進(jìn)行,代碼如下:

  1. function getImageBase64(img, ext) {   
  2.  //創(chuàng)建canvas DOM元素,并設(shè)置其寬高和圖片一樣   
  3.  var canvas = document.createElement("canvas");   
  4.  canvas.width = img.width;   
  5.  canvas.height = img.height;   
  6.  var ctx = canvas.getContext("2d");   
  7.  //使用畫布畫圖   
  8.  ctx.drawImage(img, 0, 0, img.width, img.height);   
  9.  var dataURL = canvas.toDataURL("image/" + ext);     
  10.  
  11.  //返回的是一串Base64編碼  
  12.  canvas = null 
  13.  return dataURL;   
  14.  
  15. var img_path ="yxdj250x250.jpg" 
  16. //網(wǎng)頁中需提前設(shè)定一個id為icon的img元素  
  17. var user_icon = document.getElementById('icon');   
  18. fileExt="" 
  19. //獲取base64編碼  
  20. user_icon.src = img_path;   
  21. user_icon.onload = function () {   
  22.  //base64編碼   
  23.  base64 = getImageBase64(user_icon, fileExt);   
  24.  console.log(base64);  

操作方法:準(zhǔn)備一張圖片,上面的代碼中使用的是:yxdj250x250.jpg,實際操作時換為自己要轉(zhuǎn)化的圖片。

將以上js代碼放入html中,打開運行,然后從瀏覽器的調(diào)試工具中可以看到輸出了圖片對應(yīng)的base64編碼,效果如下:

jpg2html_01.jpg

這時,如果要在網(wǎng)頁中顯示圖片,只要使用img src=”"方法,將上面輸出的編碼填入src即可。

jpg2html_02.jpg

2. 接下來實現(xiàn)口令功能,代碼如下:

  1. var pass = prompt('請輸入口令','');  
  2. if (pass != "123"){  
  3.  history.go(-1);  
  4.  alert("口令錯誤。");  
  5.  
  6. else{  
  7.  show_pic();  

從以上的功能邏輯可以看出,如果輸入口令:123,則顯示圖片,反之不能打開。

3. 口令能被直接查看到,顯然是不行的。那樣隨便誰懂點電腦知識都可以獲取口令,就失去了口令保護(hù)的效果。

或許有人會說:不要使用名文比較,使用變量比較、把口令字符隱藏起來。但也不是個有效的辦法。懂點技術(shù)的都知道瀏覽器可以斷點調(diào)試的,只要來到斷點處,就可以直接查看密碼:

jpg2html_03.jpg

真正有效的辦法是什么呢?JS代碼混淆加密!口令也是存儲在JS代碼中的,只要將代碼混淆加密,口令也會一起被加密,就沒辦法找到密碼了,而且還可以防斷點調(diào)試。

下面是混淆加密后的代碼效果:

jpg2html_04.jpg

jpg2html_05.jpg

JS代碼混淆,國際上有JScrambler,國內(nèi)有JShaman,混淆效果差不多,JShaman的使用起來更方便一些,中文界面、操作也更符合國人習(xí)慣。

在進(jìn)行代碼混淆時,一定要使用“字符串加密”功能,因為這是我們進(jìn)行混淆的關(guān)鍵需求,只要選了這一項,密碼才會隱藏起來。

jpg2html_06.jpg

有的技術(shù)同學(xué)很可能有反對意見,認(rèn)為JS混淆加密后是可以還原的。

關(guān)于這個想法,要分情況。

如果是用unescape、escape、eval進(jìn)行的初級加密,那是可以逆的,可以解密的。

而如果是真正的高強度混淆加密,是不可解的。

這個需要從理原上深度的解釋,比如JShaman這種混淆加密,使用的并非是簡單的可逆加密。

而是先對JS源代碼進(jìn)行詞法分析、語法分析,分離出變量、常量、函數(shù)、關(guān)鍵字等,生成語法樹;然后進(jìn)行變量變形、常量陣列化、加密,插入僵尸代碼、加入反調(diào)試、再平展控制流等等,***再重新生成代碼。

是對代碼進(jìn)行了重建的,不可逆的。

jpg2html_10_1.jpg

還是不太相信嗎?

好的,我們來實際檢測一下,逆一次。

先進(jìn)行代碼混淆:

jpg2html_10.jpg

再對對結(jié)果代碼進(jìn)行反混淆。常用的是esprima、escodegen。

這里在nodejs的環(huán)境下使用:

首先安裝這兩個組件:

  1. npm install esprima 
  2. npm install escodegen 

然后準(zhǔn)備以下代碼:

jpg2html_11.jpg

然后執(zhí)行,這時會輸出反混淆結(jié)果:

jpg2html_12.jpg

可見,反混淆后得到的代碼,跟原始代碼差別非常大,多了很多很多復(fù)雜的邏輯關(guān)系,字符也是混亂不堪,代碼幾乎是無法閱讀,更別說理解出原本代碼含義了。

從這解密后的代碼中,當(dāng)然也沒辦法找到原來的密碼“123”。

jpg2html_13.jpg

混淆與反混淆的問題暫告一段落,如果有人還反駁:一點點的讀,只要肯花時間,三天、一個月,總能慢慢讀懂。那就屬于鉆牛角了。

我們回到正文。因為圖片的base64編碼字符串比較長、內(nèi)容量大,混淆加密時,建議只對關(guān)鍵代碼進(jìn)行混淆,否則生成的代碼可能會太過龐大。

jpg2html_07.jpg

經(jīng)過這一系列操作后,一張被口令保護(hù)的圖片就生成了。

jpg2html_08.jpg

掌握了一個很絢酷的技能吧!

同時,這個技能在很多場合,是有實際用途的,相信你會遇的到。

責(zé)任編輯:趙寧寧 來源: Freebuf
相關(guān)推薦

2019-04-18 10:09:00

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全技術(shù)周刊

2021-07-13 06:10:02

CSS 技巧background-

2022-02-22 07:50:10

CSS前端CSS-doodle

2023-01-31 10:23:00

CSS倒影效果

2022-07-14 07:01:56

Eureka讀鎖線程

2021-07-06 06:07:14

CSS 技巧背景

2014-09-25 01:31:22

辦公設(shè)備智能硬件

2021-07-16 05:59:27

CSS 技巧帶圓角的三角形

2011-10-21 09:10:12

JavaScript

2009-09-23 10:46:04

李開復(fù)告別谷歌

2021-08-13 09:01:31

Python小游戲Python基礎(chǔ)

2014-01-03 17:18:45

Windows 9開始屏幕

2009-07-06 14:05:50

Servlet編程Servlet顯示圖片

2013-06-21 17:09:05

2024-01-11 12:45:12

AI訓(xùn)練

2021-05-11 18:39:24

AI

2013-11-06 15:32:38

創(chuàng)業(yè)招人

2011-07-11 10:16:07

JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产一区二区精品自拍 | 亚洲精品一区二区在线观看 | 中文字幕一区二区三区不卡 | 精品久久久久久久久久 | 欧美日产国产成人免费图片 | 91文字幕巨乱亚洲香蕉 | 91色在线| 国产四区 | 欧美久久一区二区三区 | www.国产91| 91精品国产一区二区三区 | 精品国产欧美 | 久久精品欧美一区二区三区不卡 | 少妇黄色 | 国产重口老太伦 | 91精品国产91久久久久久吃药 | 国产精品色av | 久久机热 | 国产精品国产三级国产播12软件 | 颜色网站在线观看 | 日韩网站免费观看 | 欧美另类日韩 | 操操操av | 91亚洲精华国产 | 三级成人在线观看 | 日韩欧美不卡 | 日韩精品一区二区三区久久 | 嫩草研究影院 | 一区二区三区在线免费看 | 亚洲国产精品成人无久久精品 | 九色91视频| 日韩精品一区二区三区在线 | 日韩中文字幕在线观看 | 欧美一级免费 | 国产精品日产欧美久久久久 | 亚洲麻豆 | 成人日韩av | a免费视频 | 伊人无码高清 | 97精品一区二区 | 秋霞av国产精品一区 |