CORS和CSRF--学习笔记

一、CORS 和 CSRF 区别

两者概念完全不同,另外常常我们也会看到 XSS ,这里一起介绍:

  • CORS : Cross Origin Resourse-Sharing 跨站资源共享

  • CSRF : Cross-Site Request Forgery 跨站请求伪造

  • XSS : Cross Site Scrit 跨站脚本攻击(为与 CSS 区别,所以在安全领域叫 XSS)

二、CORS

1、概念

跨来源资源共享(CORS),亦译为跨域资源共享,是一份浏览器技术的规范,提供了 Web服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET请求方法以外也支持其他的 HTTP 请求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比JSONP 要来的好。另一方面,JSONP 可以在不支持 CORS 的老旧浏览器上运作。现代的浏览器都支持 CORS。

—— 维基百科

核心知识: CORS是一个W3C标准,它允许浏览器向跨源服务器,发出XMLHttpRequest 请求,从而克服 AJAX 只能同源使用的限制。

因此,实现 CORS 通信的关键是服务器。只要服务器实现了 CORS 接口,就可以跨源通信,即为了解决跨域问题。

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Security是一个强大的安全框架,用于在Spring应用程序中实现身份验证、授权和其他安全功能。它也提供了对CORSCSRF的支持。 对于CORS,Spring Security提供了一些配置选项来允许跨域资源共享。你可以通过`cors()`方法来启用CORS支持,并配置允许访问的域、方法和头部。例如,以下配置允许来自任何域的GET和POST请求: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .cors().and() // 其他配置... } @Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.addAllowedOrigin("*"); configuration.addAllowedMethod("GET"); configuration.addAllowedMethod("POST"); configuration.addAllowedHeader("*"); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); return source; } } ``` 对于CSRF防护,Spring Security默认会启用CSRF保护。它会自动生成一个CSRF令牌,并将其包含在表单中或者在请求头中发送。开发者可以通过配置来自定义CSRF令牌的生成和验证方式。以下是一个简单的配置示例: ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and() // 其他配置... } } ``` 上述配置将CSRF令牌存储在Cookie中,并且在响应中发送给客户端,客户端将令牌作为请求的一部分发送给服务器进行验证。 综上所述,Spring Security提供了对CORSCSRF的支持,并且可以通过配置来自定义其行为。开发者可以根据具体需求进行相应的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值