验证码防御
通过验证码可以防止非人为的一些操作,因为CSRF的攻击它是用户在不经意间的一次访问,如果给用户弹一个验证码,那么用户就能知道他所做的操作,不过这种方法不太现实,因为用户体验太差,每做一个操作就要收一次验证码,而且对服务器来说也消耗了一定的资源
验证referer
referer的作用:服务器在接受请求时,会去验证这个请求是由哪一个站点发起的
防御原理:当用户通过访问攻击者的网站对服务器发起请求时,服务器可以通过验证referer来判断是否遭到csrf
缺点:攻击者只需要修改referer,来假冒发起的站点
Token防御
防御原理:用户在每一次请求服务器时,都会携带上服务器为其生成的token值,而且token值在每一次请求完成后都会自动更新,所以攻击者拿不到最新的token值,导致最终攻击的失败
自定义属性值JWT
JWT(JSON Web Token)是一种基于JSON格式的Web令牌,用于在应用程序和服务之间传递信息,它是一种轻量级、可靠的身份验证和授权机制,常用于RESTful API和单点登录(SSO)系统中。
JWT由三部分组成:
- Header:包含令牌类型和使用的加密算法等信息
- Payload:也称为Claims,包含一些声明,用于描述身份信息、权限等内容。常见的声明有iss(签发者)、exp(过期时间)、sub(主题)和aud(受众)等。
- Signature:由前两部分使用加密算法生成的签名,用于验证令牌的合法性。签名就是一对公私钥,权威方用私钥加密,公钥是公开的,私钥只有权威方才有,所以你能用公钥解开,就能说明这是权威方的签名。
JWT的作用包括:
- 身份验证:JWT可以用于验证用户的身份,确保用户已用过认证
- 授权:JWT包含用户的权限信息,用于授权用户访问特定资源
- 信息交换:JWT可以再应用程序和服务之间传递信息,例如用户ID、邮箱地址等
- 单点登录:JWT可以用于实现单点登录(SSO),允许用户在多个应用程序中使用同一组凭据登录
JWT (JSON Web Token)
用同一组凭据登录
JWT (JSON Web Token)