数据存储、数据源头、安全问题、数据代码、敏感数据

本文是《Java业务开发常见错误100例》的学习笔记,重点关注数据存储策略,如Redis、InfluxDB和ES的适用场景,以及数据源头的可信性验证和安全问题,包括接口参数校验、防刷措施。此外,讨论了数据代码的安全处理,如避免漏洞和保护敏感数据,如密码和敏感信息的加密方法。
摘要由CSDN通过智能技术生成

 极客时间《Java业务开发常见错误100例》学习笔记

数据存储

  • Redis 对单条数据的读取性能远远高于 MySQL,但不适合进行范围搜索。
  • InfluxDB 对于时间序列数据的聚合效率远远高于 MySQL,但因为没有主键,所以不是一个通用数据库。
  • ES 对关键字的全文搜索能力远远高于 MySQL,但是字段的更新效率较低,不适合保存频繁更新的数据。
  • 主数据由两种 MySQL 数据表构成,其中索引表承担简单条件的搜索来得到主键,Sharding 表承担大并发的主键查询。主数据由同步写服务写入,写入后发出 MQ 消息。
  • 辅助数据可以根据需求选用合适的 NoSQL,由单独一个或多个异步写服务监听 MQ 后异步写入。
  • 由统一的查询服务,对接所有查询需求,根据不同的查询需求路由查询到合适的存储,确保每一个存储系统可以根据场景发挥所长,并分散各数据库系统的查询压力。

数据源头

  • 客户端的计算不可信。虽然目前很多项目的前端都是富前端,会做大量的逻辑计算,无需访问服务端接口就可以顺畅完成各种功能,但来自客户端的计算结果不能直接信任。最终在进行业务操作时,客户端只能扮演信息收集的角色,虽然可以将诸如价格等信息传给服务端,但只能用于校对比较,最终要以服务端的计算结果为准。
  • 所有来自客户端的参数都需要校验判断合法性。即使知道用户是在一个下拉列表选择数据,即使我们知道用户通过网页正常操作不可能提交不合法的值,服务端也应该进行参数校验,防止非法用户绕过浏览器 UI 页面通过工具直接向服务端提交参数。
  • 除了请求 Body 中的信息,请求头里的任何信息同样不能信任。来自请求头的 IP、Referer 和 Cookie 都有被篡改的可能性࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值