API安全机制之登录

本文探讨了API登录的本质,包括基于Cookie、Session的传统实现和基于token的安全令牌方法。详细阐述了登录流程,并提到了session fixation攻击及其防范措施。最后,介绍了代码重构,以支持HttpBasic认证和Session认证,并利用jpa实现审计功能。
摘要由CSDN通过智能技术生成

登录的本质

保持登录状态的方法

基于Cookie、Session的实现

1、login

2、登录服务验证用户密码后生成一个有效的sessionid,同时在内存中创建一个空间(session)来存放于sessionid相关的信息

3、返回一个Set-Cookie的header,将sessionid存入浏览器

4、浏览器在后续的请求中会把sessionid最为请求头重cookid信息携带上

5、服务器根据sessionid在内存中查找到响应的session来获取会话相关信息

基于token安全令牌的

1、客户端调用一个登录服务,而不是每次请求都带着用户名密码

2、登录服务验证用户名密码后生成一个有效的token,存入存储

3、登录服务把token返回给客户端

4、客户端每次请求时携带token来访问

5、服务器通过查询客户端存储来确定客户端是否已经认证过

常见的登录攻击及防护

session Fixation 攻击

1、攻击者首先登录获取session cookie

2、诱骗用户使用攻击者已存在的session cookie进行登录

3、一旦用户登录,攻击者的session中存放的就是用户的信息了,那么攻击者就可以已用户的身份进行操作了

解决办法

        if(session!=null){
   
            session.invalidate();
        }
        request.getSession(true).setAttribute("user",user);

注: 在登录接口调用getSession默认为true,找不到session返回一个新的,传入一个false如果找不到就返回一个null,不会新创建一个,判断是否为空,不为空调用invalidate方法使之失效掉,然后在从新创建

重构代码

protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
   
        System.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值