众所周知,一个安全的软件对于用户以及企业来说是非常重要的,如果软件的安全性不高很有可能会给用户以及企业造成很大的损失。例如:用于访问应用程序以外服务的身份验证凭据信息没有加密;你的网站被挟持,客户信息泄露,销售数据产品信息被窃取;在 URL、错误信息或日志中暴露会话标识符;SQL注入攻击;没有授权的用户也能访问受保护的功能或者服务等等,这些都是不安全代码所导致的。
下面我们简单描述一下构建Odoo安全代码的十项规则:
- 远离Eval
- 切勿使用Pickle
- 谨慎的使用数据库游标
- 抵御XSS
- 保护密码和凭证
- 不要过度使用Sudo
- 用于网站表格的CSRF凭证
- 掌握RULES(约束)
- CETATTR并不总是适合的
- 谨慎使用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/路径!