跨站请求伪造防护
介绍
跨站请求伪造(CSRF)是一种网络安全漏洞,允许攻击者诱导用户执行他们不打算执行的行动。OpenResty Edge 中提供了两种方式实现 CSRF 防护,包括设置 Cookie 的 SameSite 属性以及启用 CSRF token 校验。
设置 Cookie SameSite 属性
这个动作有以下参数:
- 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-Type
为 text/html
的请求,会在响应内容末尾添加一段 JavaScript 代码,这段代码会自动为页面中的表单请求参数注入 _edge_csrf_token
参数,以便在发起表单请求时携带该参数。而对于 POST/PUT/DELETE
方法的请求,则会检查请求参数中的 _edge_csrf_token
是否有效,如果参数无效会返回 403 拒绝页面,同时 会写入 WAF 日志记录当前请求信息。
该动作可以设置 _edge_csrf_token
参数的有效期,默认为 3600 秒。