CSRF 利用的是网站对用户网页浏览器的信任。
伪造请求(一般是一个非法链接): 链接伪造了目的性请求参数,因为地址需要同源,所以不会改。
Cookie 是通过浏览器将服务器返回的数据保存在本地的一小块数据(一般小于4kb)。当浏览器发送请求且浏览器存在 Cookie 且同源不跨域时,浏览器会自动在请求头携带上 Cookie 数据。所以浏览器对csrf背锅,即csrf利用的是网站对用户网页浏览器的信任。
如果使用token,因为token可以不放在cookie里面,在发送请求时经过前端程序处理才可以把token放到请求参数中,所以在请求伪造的非法链接时,浏览器会自动让请求携带cookie,但是没经过前端的操作,请求不会携带token,服务器没有验证token,就会拦截不服务。
还可以在请求时 使用 token+核心参数+时间戳+盐 使用sha md5之类的单项加密算法做个签名,验证请求核心参数是否被伪造。
个人理解,欢迎交流。