- CSRF
- CORS
- 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
支持以下几种
- None 无限制
- Public 使用 public 用户标识 访客身份
- User 使用 会话中的 用户ID 标识用户身份, 并验证密码
- 其他, 比如Key 使用 token 识别用户
具体实现是 ir.http