安全常见问题解答

此页面包含一些与安全相关的常见问题。在向 Frappe 团队提出安全问题之前,请先查看此页面。

Frappe 允许上传恶意文件,如 .EXE 文件

Frappe 不是杀毒软件,因此不会扫描上传的任何类型的文件。Frappe 内置了验证功能来阻止某些扩展名,您可以在“系统设置” > “文件” > “允许的文件扩展名”中进行调整。

Frappe 显示完整的错误回溯信息

错误追踪有助于开发人员更快地调试问题。在绝大多数情况下,它们不会泄露我们开源源代码中尚未公开的任何信息。如果您仍希望禁用回溯信息,请前往“系统设置”并取消勾选“显示完整错误并允许向开发者报告问题”。

Frappe 在发送请求时不加密密码

Frappe 建议在生产环境中正确设置 HTTPS(TLS),如果设置正确,每个请求都会在传输层进行加密,因此在此基础上再次手动加密请求内容的安全收益很小。

如果您使用像 Burp Suite 这样的工具,通过设置代理/证书来拦截加密请求,从而查看未加密的流量,那么您实际上并未处于真实的威胁模型中。在现实世界中,如果 TLS 被攻破,您将面临更大的问题。

此外,Frappe 使用 PBKDF2 + SHA256 哈希算法存储登录密码。一旦存储,就无法检索原始密码。需要可检索值的密码字段(例如 API 密钥)则使用 Fernet 进行对称加密存储。

Frappe 在密码字段上启用“自动完成”功能

自动完成和密码管理器被广泛认为是更安全且用户体验更好的选择。禁用自动完成是过时的做法,而且如果您禁用它,主流浏览器甚至不会尊重这一设置。参考:

Frappe 不会每 30/90 天强制密码过期

定期更换密码并不一定安全,甚至可能产生有害的副作用:

如果您仍然需要此功能,可以在“系统设置” > “强制用户重置密码”中启用。

Frappe 不允许配置密码要求以包含大写、小写和特殊字符

硬性规定密码要求通常用户体验不佳。密码强度主要基于熵,请参阅此漫画以更好地理解:

Frappe 转而使用启发式算法来计算密码强度。默认情况下,我们要求密码具有合理的强度,但如果您想提高此强度,可以在“系统设置” > “密码” > “最低密码强度评分”中进行配置。

Frappe 不允许在不同路径上配置不同的应用程序。因此这种情况不会发生。默认情况下,您配置的域名/子域名下的所有页面均由 Frappe 提供服务。

Frappe 不会为 cookie 添加“Secure”标志

Frappe 仅在通过 HTTPS 协议访问时才会为 cookie 添加“Secure”标志。

我们建议在您的域名上启用 HSTS,以便阻止未加密的流量。

我们允许非 HTTPS 连接,以支持用户可能不想设置 TLS 的内部网络部署。

网站会暴露其运行在 Frappe 上

如果您了解应用程序的特征,就很容易判断一个网站运行在什么平台上。例如,预加载头、资源文件名和 API 路径。要掩盖所有这些信息是不可能的。

即使我们从用户界面隐藏品牌标识,也无需太多时间就能发现某个特定网站运行在 Frappe 上。

在像 Frappe 这样的协作环境中,链接到外部工具和资源通常是工作流程中必要的一部分,因此完全禁用它们并不现实。为了解决潜在的网络钓鱼风险,可以在用户离开工作台之前显示一个警告弹窗。此功能可以在“系统设置” > “显示外部链接警告”中启用。

打印格式或开发者字段中的 XSS 漏洞

诸如打印格式、自定义脚本及其他面向开发者的 HTML 字段,特意设计为允许使用原始 HTML/JavaScript 进行自定义。这些字段仅对受信任的用户(如系统管理员/开发者)开放,因此在此类上下文中渲染脚本属于预期行为,不视为 XSS 漏洞。除非不受信任或低权限用户能够利用这些字段,否则此类脚本执行的报告均视为无效。