Odoo web controller 安全机制

  1. CSRF
  2. CORS
  3. Authentication

   

CSRF 跨站请求伪造

是指 攻击者通过伪造的网页, 让被攻击者访问, 然后用伪造的网页向 正常网页提交恶意数据

  • Odoo route 可以设置 csrf = true 来开启
  • Odoo 客户端已经实现了 csrf 验证, 一般在 表单上, 隐藏了一个 input

<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>

  • 在 客户端提交请求的时候, 在请求中, 加入参数 csrf_token
  • Odoo controller 收到请求的时候, 会使用 validate_csrf() 对 提交的 token 进行验证

   

备注, odoo 只要求对 HTTP 请求进行 CSRF保护, 而 JSON 请求, 则不需要使用此保护机制.

  • 如果是自己实现的应用, 需要遵循 csrf_token() 获取 token, validate_csrf() 验证 token的 机制.
  • Token 包含 2部分, 之间用 字母o 进行分隔, 前面部分是 签名. 第二部分是 有效期
  • 如果自己实现 REST api 最好关闭 csrf

   

CORS 跨源资源共享

通常所说的跨越访问保护, 它注明资源可以被访问的来源的范围, 用域名表示, 可以是 * 或者 abc.com

   

Odoo route 可以这是 cors=* 设置

   

Authentication

支持以下几种

  1. None 无限制
  2. Public 使用 public 用户标识 访客身份
  3. User 使用 会话中的 用户ID 标识用户身份, 并验证密码
  4. 其他, 比如Key 使用 token 识别用户

   

具体实现是 ir.http