总结了APP接口安全设计的要点,给程序员写APP接口代码的安全规范提供了便利!请求合法的检查:要求合法性的检验主要是为了避免API被非法调用,例如系统中有邮件接口,为了避免该邮件接口被邮件轰炸机滥用,可以采用以下方法:
1.认证代码、认证代码主要用于防止恶意注册、恶意解读密码、恶意灌水等违法操作,认证代码可以使用谷歌的CAPTCHA解决方案。2.Token令牌,Token主要用于自动登录,也就是说,在不需要用户频繁登录的情况下法性。常见的流程是使用用户名和密码登录后,服务器返回token,后续的客户端每次都有这个token,如果该token没有超过一定的时间(token有效期),则要求客户端重新输入用户名和密码并重新获得token3.IP、MAC地址限制,只允许某个MAC地址、IP或IP段的客户端进行访问请求,只能在一定程度上发挥预防作用。4.User-Agent和Refer限制只能在一定程度上发挥防范作用。
数据合法性检验:数据合法性检验主要是为了避免异常数据和注入攻击。1.不依赖客户端的数据检验,无论客户端是否进行数据检验,服务方都必须进行合法的检验。2.以白名单的方式验证数据的合法性,即根据一系列已知的正确值或规则验证请求数据,不要尝试验证某些特定的错误。数据加密:数据加密主要是加密敏感数据,避免网络传输过程中的窃听和包装引起的敏感数据泄漏,常见方法主要是1.使用HTTPS协议。2、对敏感数据采用密钥加密解密。界面错误处理:界面错误处理主要是编码界面的返回结果,制定统一的错误返回代码,避免因界面错误和异常等原因导致堆栈信息泄露。界面过载保护:界面过载保护是指在界面访问频率上设置门槛,超过门槛后不予处理,可直接返回错误代码,在一定程度上防止CC攻击,过载保护可以通过网络服务器控制,也可以通过代码控制。
1.Nginx可通过HttpLimitReqModul限制单位时间内连接数的模块,使用limit_req_zone和limit_req命令配合使用达到限制。如果并发连接超过指定数量,则返回503错误。HttpLimitConnModul用于限制单个ip的并发连接数,使用limit_zone和limit_conn指令两个模块的区别前一个是限制一段时间内的连接数,后者限制同一时间的连接数。2.可以通过代码来判断,最好基于Redis计数器或服务器缓存,以免影响性能。