整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          釣魚騙局:通過偽造App Store支付鏈接誤導用戶

          絡犯罪目前又將目標指向蘋果用戶,他們通過更加成熟的釣魚手法,引導用戶點擊一個支付退款鏈接,由此獲取用戶個人敏感數據。

          釣魚的前期-引導用戶進入“陷阱”

          這種新的釣魚攻擊被偽裝為Apple store 的退款郵件。一切,是從一封退款郵件開始。首先,用戶將會收到一封郵件,通知用戶,該用戶ID正在進行支付交易,詢問是否確認購買郵件中出現的產品,若是不購買的話,便需要用戶點擊郵件中提供的鏈接。接下來,才是此次釣魚攻擊的目的。

          據 Malwarebytes分析,這封郵件的真正目的在于獲取用戶的AppleID和密碼,同時收集有用的個人及銀行信息。

          其實,大部分用戶可以較為容易地識破這種釣魚攻擊,因為用戶根本就沒買什么產品。然而有些用戶可能缺乏一定的安全意識,他們往往認為既然我都沒購買產品,那理所應當地需要退款,所以逐步陷入釣魚攻擊設計者的陷阱里。這正是釣魚設計者所想要達到的效果,讓用戶在匆忙之間,并沒有冷靜思考其中細節,而匆匆點擊了鏈接。

          如果,我們點擊了鏈接會發生什么呢?

          首先,你會被引導到一個受感染的 T-shirt 網站(或其他產品的網站),同時出現一個偽造的登錄頁面。

          據分析,目前該釣魚網址大多數是以下網址:

          aut0carhire,com/index/user12-appleid/index.HTML

          接著,用戶將會被要求輸入你的Apple ID及密碼,然后下一步將會要求你填寫你的姓名,地址,生日及銀行賬戶等信息。

          最后,在頁面上會出現一個“取消交易”按鈕,點擊之后的結果是,頁面會在用戶不知情的情況下,將輸入的信息存儲并發送到服務端。

          安全建議

          如果不小心完成了上述操作,請及時和相應銀行聯系,暫時掛失該銀行卡,同時關注銀行賬戶的交易情況。

          平時接受郵件時,應當注意:

          1、不要打開任何可疑的或者未知的郵件;

          2、不要下載未知發送者的附件;

          3、不要點擊未知郵件中的任意鏈接。

          信還在用4s的朋友應該還有很多吧,最近在問答里面回答了一個“8G的4s目前還有什么用”,我的回答是降級到6.1.3當備用機,懷舊經典。有朋友問怎么降級,還有朋友說很多軟件無法適配…今天就來說一下如何下載舊版的app。

          以下內容為轉載,較久之前小編測試過,有用!現在貼出來分享給大家,希望能幫到大家(ps:教程為mac版本,win版軟件類似,大家可以自行嘗試。)

          準備工作

          你所需要的東西非常簡單:

          * iTunes (什么?你沒有?)* Charles Proxy (點擊下載)

          你下載的 Charles Proxy 為30天試用版本,安裝后你將看到如下界面,這是一個10秒的等待系統告訴你你正在使用使試用版本。

          另外,邊看視頻教程邊操作可能會更簡單更節約時間。

          Youtube: https://www.youtube.com/watch?v=XVejjUG9xUo

          優酷: http://v.youku.com/v_show/id_XMTgxNTMxMTY0NA==.html

          接下來你會收到這樣的提示:

          請點擊 Grant Privilege 并輸入管理員密碼,這將自動為系統配置代理設置以啟用 Charles 服務。

          你便可以看到左邊開始滾動顯示你的網絡流量了,先不管它。Charles Proxy 使用Men in the Middle (MitM) 來監視你的HTTPS協議,因此它需要證書。如果你配置過Surge MitM 那你已經很熟悉了,接下來我們需要先處理證書的問題:

          注意 這步非常重要 如果你使用 iTunes 12 或以上版本 此步失敗將導致 iTunes 不驗證 SSL 服務器身份阻止你下載

          Windows 通過證書方法請參照英語官網方法https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

          在你的頂部 Bar 中找到 Help,SSL Proxying,點擊「Install Charles Root CA」(圖中「I這里」的位置),這將自動打開 macOS 鑰匙串訪問,你需要再次輸入管理員密碼。

          雙擊打開(你的電腦上可能會有紅色 X 圖標)

          將第一項「使用此證書時」改成始終信任,后面的會自動修改,然后關閉小窗口,并再次輸入管理員密碼保存。

          接下來請退出 Charles,我們稍后再打開它來處理。

          開始下載

          打開 iTunes,在 App Store 中找到你所想要降級的 App,這里以 LoveLive! 學園偶像祭舉例。

          找到這個界面了嗎?很好,現在我們重新打開 Charles,等待10s進入界面之后,點擊 iTunes上的下載。

          當你看到左邊有「p數字-buy.itunes.apple.com」的時候,請前往 iTunes 取消下載,因為你實際上并不需要下載它。

          右鍵點擊「p數字-buy.itunes.apple.com」,找到「Enable SSL Proxying」并點擊。然后回到 iTunes 刷新界面(可以重新搜索,也可以直接 Cmd+R)再次點擊下載,然后再次取消。(聽起來很奇怪不是嗎,不過沒有問題)

          你驚奇地發現剛才的地址可以展開了,而且可以找到一個叫做 buyProduct 的東西,我們點開它。

          在右邊兩個 XML 中,下邊的那個里面找到比較底部的含有一大堆數字的項目「softwareVersionExternalIdentifiers」,這就是每個版本所對應的版本 ID。從小到大為從最舊的版本到最新的版本,也就是說這個App最新版本的ID是「818014617」,1.0版本是「401463784」。

          如果你要下載它最早的版本,那么直接使用第一個 Integer 就可以了。但是如果要下載中間的一個版本怎么辦呢?你可能需要對照App更新列表來找到你要的版本,并且不斷嘗試……此問題也困擾了我很久。

          好的,現在我們找到了版本 ID,以 1.0 即 401463784 舉例。現在我們再次右鍵「p數字-buy.itunes.apple.com」,在剛剛Enable SSL Proxying 的下方找到 Breakpoint:斷點并勾選它。再次返回iTunes刷新并再次點擊下載。

          Duang!Charles 突然彈了出來!因為你剛剛設置了斷點,iTunes 再次請求的時候 Charles 給了你一個暫停時間的功能,這個時候下面的 Cancel 就是忽略,Abort 就是阻止,Execute 就是執行。如果我點擊 Abort,你會發現 iTunes 彈出窗口顯示下載未完成,未知錯誤。那是因為你拒絕了它的 buyProduct 下載。

          閑話不多說,我們選擇頂上「Overview」旁邊的「Edit Request」,并在 Cancel Abort 和 Execute 的上方選擇 XML Text。

          頂部有一個叫做 appExtVrsID 的項目,將它的值直接修改成我們需要的版本 401463784。然后點擊底下的 Execute。接下來還會有幾次彈窗,不需要做任何操作,直接 Execute 即可。

          恭喜!這次下載的版本就是你所需要的老版本。下載完畢后可能還會有幾次 Breakpoint,直接 Execute 即可,然后便可以關閉 Charles(如果你之前就關閉了 Charles,不影響)連接上你的 iPhone, iPad 或 iPod touch 將其同步進入設備即可。

          腳注:其實并不一定需要用 Charles,任何支持修改 POST 請求 HTTPS 的代理工具,方法肯定也是大同小異的。像 Surge 貌似是只能捕獲請求并不能編輯,就不太能完成這個操作。無論如何 Charles 只是其中一種選擇。

          Enjoy!

          (不要嘗試了 QQ 1.0 在我們現有的設備上都打不開)

          *2016.11.14 更新:感謝各位支持,最近思考了一下能不能直接在 iOS 上完成這個操作,而不需要通過 iTunes 同步,因為本身 Charles 支持接管 iOS 流量,和 Surge 也是很類似的。但是很遺憾,由于 iTunes Store 類軟件在 iOS 上用了特殊網絡加密,不會由于系統信任證書來信任 Charles 的偽造中間人,而 Surge 采用了 TUN 原理所以強制成功。對于 Charles 的 SSL Proxy 其他 iOS 上的 App 都可以,說明 Apple 別有用意保證用戶 App Store 安全。故大家還是需要麻煩一點通過 iTunes 來做這個操作。

          web開發中,如果你想讓用戶下載或者導出一個文件,應該怎么做呢?
          傳統的做法是在后端存儲或者即時生成一個文件來提供下載功能,這樣的優勢是可以做權限控制、數據二次處理,但缺點是需要額外發起請求、增大服務端壓力、下載速度慢。

          但隨著HTML5的標準發布,我們已經能夠做到只前端來下載各種文件了。

          我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。

          后端響應式下載

          在常規的HTTP應答中,Content-Disposition 消息頭指示回復的內容該以何種形式展示,是以內聯的形式(即網頁或者頁面的一部分),還是以附件的形式下載并保存到本地。

          在HTTP場景中,第一個參數或者是inline(默認值,表示回復中的消息體會以頁面的一部分或者整個頁面的形式展示),或者是attachment(意味著消息體應該被下載到本地;大多數瀏覽器會呈現一個“保存為”的對話框,將filename的值預填為下載后的文件名)。

          我們在后端響應頭中只要設置該頭部信息,即可下載為文件,而不是請求并展示:

          Content-Type: text/html; charset=utf-8

          Content-Disposition: attachment; filename="cool.html"

          但需要注意的是,如果想要用這種方式下載文件,不能使用AJAX的方式,而是應該新建一個<a>標簽,模擬點擊下載。原因為處于安全性考慮,JavaScript無法與磁盤進行交互,因此AJAX得到的內容將被保留在內存中,而不是磁盤上。

          Nginx添加header頭下載

          location ~ \.(jpg|jpeg|png|bmp|ico|gif|swf)$ {

          add_header Content-Disposition 'attachment; filename="cool.html"';

          }

          和后端一樣的原理,只不過頭部信息通過Nginx統一添加。

          前端下載:<a>標簽的download屬性

          此屬性指示瀏覽器下載URL而不是導航到它,因此將提示用戶將其保存為本地文件。如果屬性有一個值,那么它將作為下載的文件名使用。此屬性對允許的值沒有限制,但是/和\會被轉換為下劃線。

          1. 此屬性僅適用于同源 URLs。
          2. 盡管HTTP URL需要位于同一源中,但是可以使用 blob: URLs 和 data: URLs ,以方便用戶下載 JavaScript 方式生成的內容(例如使用在線繪圖的Web應用創建的照片)。

          常規的<a>標簽,用于鏈接的跳轉,如新的頁面,那么如果我們給<a>標簽加上download屬性,就能很簡單的讓用戶保存新的html頁面。

          <a download="PHP實現并發請求.html" href="https://segmentfault.com/a/1190000016343861">PHP實現并發請求</a>

          生成并下載字符串文件

          首先我們需要了解一個特殊的數據格式:Blob。

          Blob數據

          Blob(Binary Large Object,二進制類型的大對象),表示一個不可變的原始數據的類文件對象,我們上傳文件時常用的File對象就繼承于Blob,并進行了擴展用于支持用戶系統上的文件。

          我們只能通過Blob()構造函數來創建一個新的Blob對象:

          Blob(blobParts[, options])

          // 創建一個json類型的Blob對象,支持傳入同類型數據的一個數組

          var debug = {hello: "world"};

          var blob = new Blob([JSON.stringify(debug, null, 2)],

          {type : 'application/json'});

          // 此時blob的值

          // Blob(22) {size: 22, type: 'application/json'}

          Blob對象存在兩個只讀屬性:

          size: Blob 對象中所包含數據的大小(字節)。
          type: 一個字符串,表明該Blob對象所包含數據的MIME類型。如果類型未知,則該值為空字符串。

          URL對象和下載字符串文件

          URL 接口是一個用來創建 URLs 的對象,包含兩個靜態方法:

          objectURL = URL.createObjectURL(blob)

          創建一個 URL(DOMString),包含一個唯一的blob鏈接(該鏈接協議為以blob:,后跟唯一標識瀏覽器中的對象的掩碼)。這個 URL 的生命周期和創建它的窗口中的 document 綁定。

          URL.revokeObjectURL(objectURL)

          銷毀之前使用URL.createObjectURL()方法創建的URL實例。瀏覽器會在文檔退出的時候自動釋放它們,但是為了獲得最佳性能和內存使用狀況,你應該在安全的時機主動釋放掉它們。

          var url = URL.createObjectURL(blob);

          // 此時url的值,跟document綁定,所以每個頁面創建的字符串均不同

          // blob:https://developer.mozilla.org/defe53c2-2882-43c6-b275-db2a57959789

          此時,我們在頁面中創建一個新<a>標簽,點擊即可下載我們想要的文件:

          <a href="blob:https://developer.mozilla.org/58702010-433d-4097-990f-e483d84cd02a" download="file.json">下載文件鏈接</a>

          FileReader讀取Blob數據

          想要讀取Blob數據的唯一方法是FileReader。

          FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件(或原始數據緩沖區)的內容,使用 File 或 Blob 對象指定要讀取的文件或數據。

          其中File對象可以是來自用戶在一個<input>元素上選擇文件后返回的FileList對象,也可以來自拖放操作生成的 DataTransfer對象,還可以是來自在一個HTMLCanvasElement上執行mozGetAsFile()方法后返回結果。

          該對象包含3個屬性:

          FileReader.error

          一個DOMException,表示在讀取文件時發生的錯誤 。

          FileReader.readyState

          表示FileReader狀態的數字。取值如下:

          常量名 值 描述

          EMPTY 0 還沒有加載任何數據.

          LOADING 1 數據正在被加載.

          DONE 2 已完成全部的讀取請求.

          FileReader.result

          文件的內容。該屬性僅在讀取操作完成后才有效,數據的格式取決于使用哪個方法來啟動讀取操作。

          包含6個事件處理:onabort,onerror,onload,onloadstart,onloadend,onprogress,這些不再詳細說明,因為 FileReader 繼承自EventTarget,所以所有這些事件也可以通過addEventListener方法使用。

          包含5個方法:

          FileReader.abort()

          中止讀取操作。在返回時,readyState屬性為DONE。

          FileReader.readAsArrayBuffer()

          開始讀取指定的 Blob中的內容, 一旦完成, result 屬性中保存的將是被讀取文件的 ArrayBuffer 數據對象.

          FileReader.readAsBinaryString()

          開始讀取指定的Blob中的內容。一旦完成,result屬性中將包含所讀取文件的原始二進制數據。

          FileReader.readAsDataURL()

          開始讀取指定的Blob中的內容。一旦完成,result屬性中將包含一個data: URL格式的字符串以表示所讀取文件的內容。

          FileReader.readAsText()

          開始讀取指定的Blob中的內容。一旦完成,result屬性中將包含一個字符串以表示所讀取的文件內容。

          因此我們可以直接讀取Blob對象的數據:

          var reader = new FileReader();

          reader.addEventListener("loadend", function() {

          console.log(reader.result);

          });

          reader.readAsDataURL(blob);

          // 此時result的值

          // data:application/json;base64,ewogICJoZWxsbyI6ICJ3b3JsZCIKfQ==

          reader.readAsText(blob);

          // 此時result的值

          // {

          // "hello": "world"

          // }

          下載圖片

          除了下載手動生成的字符串或對象,我們還能提供下載圖片的功能,一方面能用于支持Canvas繪圖的保存功能,一方面能提供批量下載圖片等高級功能。

          除了瀏覽器自帶的右鍵保存,我們還可以這么做來下載圖片:

          // 通過src獲取圖片的blob對象

          function getImageBlob(url, cb) {

          var xhr = new XMLHttpRequest();

          xhr.open("get", url, true);

          xhr.responseType = "blob";

          xhr.onload = function() {

          if (this.status == 200) {

          cb(this.response);

          }

          };

          xhr.send();

          }

          let reader = new FileReader();

          reader.addEventListener("loadend", function() {

          console.log(reader.result);

          });

          getImageBlob('https://cdn.segmentfault.com/v-5c4ec07f/global/img/user-64.png', function(blob){

          // 讀取來看下下載的內容

          reader.readAsDataURL(blob);

          // 最終生成的字符串

          // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAA...

          // 生成下載用的URL對象

          let url = URL.createObjectURL(blob);

          // 生成一個a標簽,并模擬點擊,即可下載,批量下載同理

          let aDom = aDom = document.createElement('a');

          aDom.href = url;

          aDom.download = 'download.json';

          aDom.text = '下載文件';

          document.getElementsByTagName('body')[0].appendChild(aDom);

          aDom.click();

          });

          下載excel文件等

          如果你明白了下載的原理,那么所有的內容都能夠理解,只不過是轉換成對應的格式而已,當然,復雜格式的文檔不需要你自己去配置,可以引入第三方庫,在excel文檔方面我選擇用 tableExport庫(https://tableexport.v5.travismclarke.com/#javascript):

          // 引入CDN文件

          'https://cdn.bootcss.com/xlsx/0.14.1/xlsx.core.min.js',

          'https://cdn.bootcss.com/FileSaver.js/2014-11-29/FileSaver.min.js',

          'https://cdn.bootcss.com/TableExport/5.2.0/js/tableexport.min.js'

          // 綁定下載事件,這個是我自己的場景下代碼,可能不適合大家,具體的參考官方文檔

          const tableDom = $('#table');

          $('.table-exportBtn', tableDom).on('click', function () {

          const tableExport = tableDom.tableExport({

          formats: ['xlsx', 'txt'],

          filename: '表格下載',

          exportButtons: false

          });

          const type = $(this).data().type;

          const exportData = tableExport.getExportData()[tableDom[0].id][type];

          const {data, mimeType, filename, fileExtension, merges, RTL, sheetname} = exportData;

          // 源碼里才能看到完整參數,官方文檔沒有寫全,導致下載的文件格式錯誤

          tableExport.export2file(data, mimeType, filename, fileExtension, merges, RTL, sheetname);

          });

          默認的方法會自動生成下載按鈕,但如果你想自定義下載功能,參考 exportButtons: false 設置(https://tableexport.v3.travismclarke.com/examples/exportButtons.html) 一節,但這個文檔有問題,export2file參數不完整,導致下載的xlsx文件一直格式錯誤,通過查看源碼,需要寫全參數才可以,上面的示例里已經寫出。

          tableExport庫源碼

          我們可以看下tableExport導出文件的核心代碼,其導出為excel格式比較復雜,由xlsx.core.min.js來完成:

          /**

          * Exports and downloads the file

          * @memberof TableExport.prototype

          * @param data {String}

          * @param mime {String} mime type

          * @param name {String} filename

          * @param extension {String} file extension

          * @param merges {Object[]}

          * @param RTL {Boolean}

          */

          export2file: function(data, mime, name, extension, merges, RTL, sheetname) {

          var format = extension.slice(1);

          data = this.getRawData(data, extension, name, merges, RTL, sheetname);

          if (_isMobile && (format === _FORMAT.CSV || format === _FORMAT.TXT)) {

          // 拼湊指定格式的data:類型 URI

          var dataURI = "data:" + mime + ";" + this.charset + "," + data;

          this.downloadDataURI(dataURI, name, extension);

          } else {

          // TODO: error and fallback when `saveAs` not available

          saveAs(new Blob([data], { type: mime + ";" + this.charset }), name + extension, true);

          }

          },

          // 先創建<a>標簽,然后提供href和download屬性,并模擬點擊

          downloadDataURI: function(dataURI, name, extension) {

          var encodedUri = encodeURI(dataURI);

          var link = document.createElement("a");

          link.setAttribute("href", encodedUri);

          link.setAttribute("download", name + extension);

          document.body.appendChild(link);

          link.click();

          },

          xlsx文件導出導出

          還沒有仔細研究,感興趣的可以查看其js-xlsx Github項目(https://github.com/SheetJS/js-xlsx/blob/master/README.md)

          第三方庫

          上面我們主要講了下載背后的原理,你可以自己封裝,也可以使用現成的第三方庫,如 download.js(https://github.com/rndme/download) ,這個能提供大部分常用數據的下載;但如果你是要下載表格數據為excel格式,還是推薦 tableExport.js(https://tableexport.v5.travismclarke.com/#javascript) 及其依賴組件。

          參考資料

          1. MDN-a: (https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/a)
          2. MDN-blob: (https://developer.mozilla.org/zh-CN/docs/Web/API/Blob)
          3. 掘金-細說Web API中的Blob:(https://juejin.im/post/59e35d0e6fb9a045030f1f35)
          4. MDN-URL: (https://developer.mozilla.org/zh-CN/docs/Web/API/URL)
          5. MDN-FileReader: (https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader)
          6. 博客園-js 獲取圖片url的Blob值并預覽:(https://www.cnblogs.com/tujia/p/6483255.html)
          7. tableExport文檔:(https://tableexport.v5.travismclarke.com/#javascript)
          8. 感謝 @Oliveryoung 提供的其他解決方案
          9. MDN-Content-Disposition: (https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition)
          10. Ajax請求無法下載文件的原因: (https://blog.csdn.net/w405722907/article/details/77366843)
          11. Github-download.js:(https://github.com/rndme/download)

          作者:趙帥強

          https://segmentfault.com/a/1190000018143902


          主站蜘蛛池模板: 天天爽夜夜爽人人爽一区二区| 亚洲av不卡一区二区三区| 亚洲国产福利精品一区二区| 亚洲高清偷拍一区二区三区| 狠狠色婷婷久久一区二区三区 | 久久99精品波多结衣一区| 久久久久无码国产精品一区| 亚洲av乱码一区二区三区香蕉| 亚洲国产成人久久综合一区| 无码丰满熟妇浪潮一区二区AV| 无码毛片一区二区三区视频免费播放| 精品无码综合一区| 一区二区三区四区免费视频| 亚洲欧美日韩中文字幕一区二区三区 | 韩国一区二区三区| 精品国产亚洲一区二区在线观看| 国产av一区二区三区日韩 | 在线免费视频一区| 国精产品一区一区三区免费视频| 精品欧洲AV无码一区二区男男 | 国产成人高清精品一区二区三区 | 精品无码人妻一区二区免费蜜桃 | 亚洲国产一区视频| 国产日韩一区二区三区在线观看| 久久精品一区二区三区AV| 国产精品日韩一区二区三区| 日韩电影一区二区三区| 精品日韩一区二区| 亚洲一区二区中文| 一区二区视频在线免费观看| 激情内射亚洲一区二区三区爱妻| 亚洲视频一区二区| 国产精品久久久久久麻豆一区| 无码日韩人妻AV一区二区三区| 国产一区二区三区在线视頻| 日本人的色道www免费一区| 国产成人无码AV一区二区| 无码国产精品一区二区高潮| 亚洲午夜精品一区二区公牛电影院| 日本一区二区三区在线网| 无码中文字幕一区二区三区|