避免水平越权攻击。服务端与小程序交互的数据接口,应对用户的身份(如cookie、authcode、accessToken、前置操作等)进行充分鉴权,不能只依赖于传入参数,防止攻击者伪装成他人发起请求。
避免垂直越权攻击。服务端提供给用户的数据接口,应与管理员权限、数据区进行分离,避免攻击者通过管理员接口入侵系统。
1. 前端获取授权凭据 auth_code 后,获取用户信息的操作应置于服务端。
2. 获取用户信息后,建议服务端生成 Cookie 并下发到前端。生成 Cookie 的算法应当确保随机性,防止攻击者通过破解 Cookie 生成算法来构造其他正常用户的 Cookie。
重要、高耗时业务接口应对用户的访问次数、请求频率做严格限制,防止攻击者通过撞库、遍历输入、重放数据等方式进行盗号或窃取用户数据。
服务端接口应对请求的参数、富文本进行有效过滤,防止通过非法输入特殊字符和命令,进行 xss、sql、命令注入等常见web攻击。
服务端需要对用户请求操作的合法性进行判断,包括但不限于:
1)判断请求的来源是否是自己域名或合作服务方,防止用户被 CSRF 攻击,导致攻击者直接获得用户的敏感操作权限。
2)对请求的参数及时间进行签名,防止攻击者伪造请求数据。
3)对用户的权限及前置操作进行验证,防止用户绕过验证逻辑。
4)对于返回重要数据或完成重要操作的请求,如登录、数字开锁等,应增加一次性凭证,防止攻击者劫持到用户登录凭证,重放攻击从而获得权限。
应判断并限制文件的类型,防止攻击者上传恶意代码。服务端存储时,应设置好文件存储权限为只读,不可执行,并与系统其它重要代码、数据隔离。
需要判断用户下载权限,下载的文件需与其它重要数据、文件、代码隔离,管控访问路径,防止攻击者读取到其它目录下的重要文件。