跨站请求伪造防护

介绍

跨站请求伪造(CSRF)是一种网络安全漏洞,允许攻击者诱导用户执行他们不打算执行的行动。OpenResty Edge 中提供了两种方式实现 CSRF 防护,包括设置 Cookie 的 SameSite 属性以及启用 CSRF token 校验。

这个动作有以下参数:

  • SameSite:设置 Cookie 的 SameSite 属性,可以选择 Strict 或者 Lax
    • Strict:这个选项表示 Cookie 只会在同一站点的请求中被浏览器发送。如果请求的来源和目标不是同一个域名或协议(即使是同一个域名的子域名),Cookie 都不会被发送。
    • Lax:这个选项表示 Cookie 会在同一站点的请求和从其他站点发起的安全请求(如 GET)中被浏览器发送。但是在从其他站点发起的非安全请求(如 POST、PUT、DELETE 等)中,Cookie 不会被发送。
  • Cookie names:选填参数,可用于指定需要修改的 Cookie。如果为空,默认会修改所有的 Cookie。

启用 CSRF token 校验

注意:该动作仅适用于表单请求,如果 HTML 页面上使用 AJAX 请求,CSRF token 将无法成功注入,请按需开启。

启用后,对于 Content-Typetext/html 的请求,会在响应内容末尾添加一段 JavaScript 代码,这段代码会自动为页面中的表单请求参数注入 _edge_csrf_token 参数,以便在发起表单请求时携带该参数。而对于 POST/PUT/DELETE 方法的请求,则会检查请求参数中的 _edge_csrf_token 是否有效,如果参数无效会返回 403 拒绝页面,同时 会写入 WAF 日志记录当前请求信息。

该动作可以设置 _edge_csrf_token 参数的有效期,默认为 3600 秒。