소스 검색

update arch

Michael Wang 3 년 전
부모
커밋
aad41d837c
1개의 변경된 파일45개의 추가작업 그리고 5개의 파일을 삭제
  1. 45 5
      arch-design.md

+ 45 - 5
arch-design.md

@@ -35,7 +35,7 @@
 1. [Layout 设计](#layout-%E8%AE%BE%E8%AE%A1)
 1. 限流设计
 1. 编辑器设计
-1. 防作弊设计
+1. [防作弊设计](#prevent-cheating-%E9%98%B2%E4%BD%9C%E5%BC%8A%E8%AE%BE%E8%AE%A1)
 1. [局部技术难点](#tech-challenges-%E5%B1%80%E9%83%A8%E6%8A%80%E6%9C%AF%E9%9A%BE%E7%82%B9)
 1. [技术特性验证](#tech-verify-%E6%8A%80%E6%9C%AF%E7%89%B9%E6%80%A7%E9%AA%8C%E8%AF%81)
 1. [升级策略](#upgrade-strategy-%E5%8D%87%E7%BA%A7%E7%AD%96%E7%95%A5)
@@ -509,6 +509,24 @@ http/ws proxy
 1. rollup.js
 1. js-obfuscator
 
+```js
+{
+  rotateStringArray: true,
+  // 防止打开devtools,打开后程序会冻结
+  // debugProtection: true,
+  // debugProtectionInterval: true,
+  // // 防止代码格式化
+  // selfDefending: true,
+  // // 要测试sourcemap是否还有用,以下sourcemap配置不起作用
+  // sourceMap: true,
+  // sourceMapBaseUrl: "http://localhost",
+  // sourceMapFileName: "exam",
+  // sourceMapMode: "separate",
+  splitStrings: true,
+  // stringArrayEncoding: ["none", "base64", "rc4"],
+}
+```
+
 ### 消极影响:
 
 查错会很困难,会变慢。
@@ -518,6 +536,22 @@ Todolist:
 // sessionStorage design
 // store 防破解?仅保存 user, QECSConfig 信息
 
+## 前端加密解密设计
+
+前后端协商加密解密,避免接口敏感信息被暴露。  
+
+1. 前后端协商N(比如5)种加密解密方式
+2. 后端选择加密的组合方式,1到2种进行连续加密
+3. 前端在需要加密的接口使用后端规定的加密方式进行连续加密,参数要加上时间戳
+4. 后端验证通过后,返回的response也是用之前加密的方式加密过,前端再进行相应的解密
+5. 加密方式被禁用后,仅影响开考接口?
+6. 后端对加密方案的选择:间隔一段时间才换加密组合
+
+## Prevent cheating: 防作弊设计
+
+1. 检测伪装Chrome版本号的行为 - 检测Chrome高能力特性
+
+
 ## tech challenges: 局部技术难点
 
 技术难题:
@@ -553,14 +587,20 @@ paramsSerializer QS defaults: null => '' ; undefined => omit ; change arrayForma
 
 ## Upgrade strategy: 升级策略
 
-如果不改接口,仅增加接口,可以分学校升级。
-但此次是为了代码混淆和接口加密而升级的,如果存在多个版本,容易被对比。
-建议充分测试后,全量升级。
+新增加API支持新前端,后端维护多套API,一次升级。  
+前端保持多套,新旧共存。  
+nginx通过域名来分发新旧前端代码。  
+如此,可支持前端灰度升级。
 
 ## Optional feature: 选做功能
 
-1. electron crash 日志捕获及上传
+1. Electron crash 日志捕获及上传
 1. 不适用的宿主环境日志
+1. Electron启动速度
+1. 非生产环境,右上角显示tip,并可以打开console
+1. Electron加固(替换网络层,用C来发网络请求,探索可行性)
+1. 先得到抓拍的png照片,再通过canvas得到jpeg格式的照片。[js image manipulation](https://github.com/oliver-moran/jimp)
+
 
 ## 待整理