從html5的新特性定位安全問題

腫諏遜汲發表於2020-09-22

  公司這邊的線上客服系統遇到了點安全問題,分析了開發的方案:

  因為是web的聊天系統,聊天記錄一般會存在html的dom裡,存在客戶端,每次開啟還能看到聊天的歷史記錄,以前騰訊的web qq就是這麼實現的,但是問題是這樣以來,dom會被撐的很大,載入起來就會變慢,一定量甚至會造成瀏覽器崩潰,同時也想過用cookie存,但是畢竟cookie這東西太大了就不太好了。於是採用了另一種辦法是採用h5提供的客戶端儲存資料的一種新方法(web storage)

  localStorage - 沒有時間限制的資料儲存

  還有一種是

  sessionStorage - 針對一個 session 的資料儲存

  localStorage的效果就是你關閉瀏覽器後,再次開啟計數器依然不變,因為是記錄在本地的

  wKiom1ZK4AHhLNWLAAEHvkOQuXQ685.png

  <!DOCTYPE HTML><html><title>localstorage</title><body><script type="text/javascript">if (localStorage.pagecount)

  {

  localStorage.pagecount=Number(localStorage.pagecount) +1;

  }else

  {

  localStorage.pagecount=1;

  }document.write("Visits: " + localStorage.pagecount + " time(s).");</script><p>重新整理頁面會看到計數器在增長。</p><p>請關閉瀏覽器視窗,然後再試一次,計數器會繼續計數。</p></body></html>

  如果使用sessionStorage就不一樣了。因為是基於會話記錄的,關閉了,計數器就沒了。。。換成聊天的話,你的聊天記錄也就沒了。。。所以不太適合我們的需要。。。

  wKiom1ZK4R3wBfFwAAD5AVTO94I924.png

  <!DOCTYPE HTML><html><title>sessionstorage</title><body><script type="text/javascript">if (sessionStorage.pagecount)

  {

  sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;

  }else

  {

  sessionStorage.pagecount=1;

  }document.write("Visits " + sessionStorage.pagecount + " time(s) this session.");</script><p>重新整理頁面會看到計數器在增長。</p><p>請關閉瀏覽器視窗,然後再試一次,計數器已經重置了。</p></body></html>

  但是由於localStorage存在客戶端,所以不能分配太大的空間,我們給他分配了5M空間,並且週期性的清除localstorage,這裡定位了一個安全問題,傳送訊息的介面是沒有加密的,於是我寫了一個python的程式模擬傳送訊息,一會這個訊息就在清除之前寫滿了,溢位了,所以介面要做加密限制,不能暴露在外,還要限制介面的請求頻率等。

  寫下這篇做個記錄。。。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69920892/viewspace-2723126/,如需轉載,請註明出處,否則將追究法律責任。

相關文章