【Java】系统漏洞:关于用户登录后操作的注意事项
项目背景:
SpringMVC + Mybatis + MySql数据库(javaWeb项目开发)
相关模块:登录,个人详细信息修改,订单详情查询
相关漏洞介绍:
1.登录的验证码:登录的验证码一定要在后台做验证,如果只是前台验证验证码后,后台未验证,可能会发生第一次验证验证码后,通过工具绕过验证码进行暴力破解;
2.拦截器:要对登录后的如个人信息操作的接口名称要使用/user或者/admin进行拦截,如用户未登录,将自动跳转至登录页面;
3.个人详细信息修改:用户的信息要存放在session里面,如用户的id,这样进行个人信息修改的时候,如果是免密接口(即修改信息不需要密码),修改账号信息的时候,一定不要直接传用户的id来做唯一的标识,使用用户的关键性信息的时候,可以从session获取当前登录用户的信息,防止如账户为3000001的用户登录后修改账户3000002的用户的个人信息;
4.订单详情接口:如果是查询用户的订单详情,只通过订单id进行查询的话,即使接口名加了/user,拦截了未登录的用户,也有可能发生其他用户登录后可以查询到非本人订单的详情信息。对于此种情况,一定要在查询订单详情前,验证此订单是当前登录用户的个人订单,即验证session中的id与此订单的创建人的id一致;防止信息的泄露;
(备注:以上漏洞真实发生过,发出来希望其他新人引以为戒,也希望能和更多的人一起交流开发中遇到的问题)