1. 极安网首页
  2. 网络安全技术

Java安全编码之CSRF

简介

CSRF攻击者可以利用该漏洞诱使用户执行他们不打算执行的操作。它允许攻击者从不同网站上攻击某一网站的某一用户。使他们执行一些非预期的操作。在这里实验的是我们登陆后,通过CSRF漏洞来修改用户的手机号。

框架

此次我们使用SpringBoot作为基础框架,登录框架采用shiro。这里没有具体的dao层

配置说明

SpringBoot采用2.3.4.RELEASE版本,Shiro采用1.7.0版本(虽然Shiro时不时的爆出一些漏洞,但是Shiro任然是一款非常优秀的登录框架,使用起来非常的灵活与便捷)。

环境搭建

结构如下 ctl为控制层,service为服务层。html文件为Thymeleaf模板,放在templates目录下面。annotation为注解包新增了两个注解AddCSRFToken和CSRFToken。aspect包为切面包。beans包下面包含用户,角色,权限三个bean。config,handler和realm包为一些shiro的配置和拦截过滤器。

Java安全编码之CSRF-极安网

具体实现

  1. User类
    User类的具体实现如下
    Java安全编码之CSRF-极安网
    在这里Role分了两种角色,一个是admin一个是user。同时也定义了两种两种权限,query和add。给admin分配query和add权限,给user分配只分配了query权限。
    Java安全编码之CSRF-极安网
  2. shiro配置
  • Realm实现
    Java安全编码之CSRF-极安网
    这里实现了两个doGetAuthorizationInfo,其中第一个doGetAuthorizationInfo是我们权限判断,也就是当我们使用subject.hasRole(“admin”),@RequiresRoles(“admin”),<shiro:hashRole name = “admin”>等标签的时候会进入这个判断,主要是判断此用户是否有相应的角色或者权限。第二个doGetAuthorizationInfo是登录的时候进入的逻辑。进入后我们会进行一个Simple的验证。登入成功后会分配授权的sessionID。
  • config配置
    shiro的拦截器配置如下,这里我们吧/loginHtml设置为不需要授权访问的接口,其他都设置为需要授权访问。
    Java安全编码之CSRF-极安网
  • 接口设定
    设定/query接口为查询手机号码,赋予权限query,/modify接口赋予权限add.
    Java安全编码之CSRF-极安网

本文转载:安全客,不代表 极安网 立场,转载请注明出处:https://www.secvery.com/3900.html