Odoo构建安全代码的十项规则

众所周知,一个安全的软件对于用户以及企业来说是非常重要的,如果软件的安全性不高很有可能会给用户以及企业造成很大的损失。例如:用于访问应用程序以外服务的身份验证凭据信息没有加密;你的网站被挟持,客户信息泄露,销售数据产品信息被窃取;在 URL、错误信息或日志中暴露会话标识符;SQL注入攻击;没有授权的用户也能访问受保护的功能或者服务等等,这些都是不安全代码所导致的。

下面我们简单描述一下构建Odoo安全代码的十项规则:

  1. 远离Eval
  2. 切勿使用Pickle
  3. 谨慎的使用数据库游标
  4. 抵御XSS
  5. 保护密码和凭证
  6. 不要过度使用Sudo
  7. 用于网站表格的CSRF凭证
  8. 掌握RULES(约束)
  9. CETATTR并不总是适合的
  10. 谨慎使用Open方法

▲规则一:远离EVAL

不要相信任何带有表达式或者代码的字符串(即使是你自己写的)

每年发现的易受攻击的代码中,大约有百分之五十以上的代码有使用unsafe eval

▲规则二:切勿使用PICKLE

永远都不要使用pickle,请使用JSON

警告:pickle模块在面对错误或者恶意构建的数据时是不安全的。永远不要解析不受信任的或者不可靠的数据

▲规则三:谨慎的使用数据库游标

使用ORM API,当不能使用它时,使用查询参数

▲规则四:抵御XSS

有太多XSS(跨站脚本攻击)——需要一一防范

▲规则五:保护密码和凭证

保护所有用户和API凭证,不要泄露它们。

▲规则六:不要过度使用Sudo

重复检查你的sudo()的使用,特别是针对于controllers/pubilc methods

▲规则七:用于网站表格的CSRF凭证

V9.0之后,HTTP发布必需CSRF(跨站请求伪造)凭证

▲规则八:掌握RULES(约束)

Odoo ACL(访问控制表)和Rules是很重要的,确保要理解它们

▲规则九:CETATTR并不总是适合的

更好的更安全的替代方案

▲规则十:谨慎使用OPEN方法

不要open(),urlopen(),requests.post()…任意的URL/路径!