公司这边的在线客服系统遇到了点安全问题,分析了开发的方案:javascript
由于是web的聊天系统,聊天记录通常会存在html的dom里,存在客户端,每次打开还能看到聊天的历史记录,之前腾讯的web qq就是这么实现的,可是问题是这样以来,dom会被撑的很大,加载起来就会变慢,必定量甚至会形成浏览器崩溃,同时也想过用cookie存,可是毕竟cookie这东西太大了就不太好了。因而采用了另外一种办法是采用h5提供的客户端存储数据的一种新方法(web storage)html
localStorage - 没有时间限制的数据存储java
还有一种是python
sessionStorage - 针对一个 session 的数据存储web
localStorage的效果就是你关闭浏览器后,再次打开计数器依然不变,由于是记录在本地的浏览器
<!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就不同了。由于是基于会话记录的,关闭了,计数器就没了。。。换成聊天的话,你的聊天记录也就没了。。。因此不太适合咱们的须要。。。安全
<!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的程序模拟发送消息,一会这个消息就在清除以前写满了,溢出了,因此接口要作加密限制,不能暴露在外,还要限制接口的请求频率等。cookie
写下这篇作个记录。。。session