主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

编写安全的 Web App

部署 Web App 所涉及的大多数潜在风险都来自于每个 App 中的代码。通过限制应用程序使用的功能并遵循此处列出的安全编码实践,您可以降低应用程序的潜在风险。

身份验证和授权

如果您的应用需要访问敏感数据或执行潜在危险的操作,您可以考虑实施自己的身份验证和授权方案。请咨询您的网络安全小组以获取建议。

将密钥存储在保管库中

您可以通过将机密存储在 MATLAB® 保管库中来从代码中删除敏感信息(例如密码)。有关在部署中使用机密的信息,请参阅处理已部署应用程序中的敏感信息

MATLAB Web App Server™ 提供定义访问控制规则的功能,使经过身份验证的用户能够从服务器的保管库中检索机密。有关启用机密访问控制的信息,请参阅控制 MATLAB Web App Server 中的机密访问 (MATLAB Web App Server)

不要调用 eval()

MATLAB eval() 函数将文本字符串转换为命令。这个强大的函数允许用户执行任意的 MATLAB 代码。反过来,此代码可以允许执行低权限用户可以访问的任何已安装程序,或者访问低权限用户可以访问的任何文件或数据。为 Web 部署和访问创建的应用程序不得包含对 eval() 调用。看eval 函数的替代方法了解从 Web App 代码中消除 eval() 方法。依靠输入清理可以帮助减轻任何间接调用 eval() 的风险。请参阅清理用户输入 (MATLAB Web App Server)

限制自由文本用户输入

在应用程序用户界面中使用菜单、滑块、拨号盘和按钮,而不是可编辑的文本字段。除了提供更好的用户体验之外,这种做法还限制了用户可以提供的输入类型以及此类输入可能带来的风险。

清理用户输入

对于安全专家来说,用户提供的数据被视为不可信,因为用户输入是黑客常见的攻击媒介。如果您的应用必须接受自由文本输入,则应用必须仔细检查输入是否存在潜在的代码注入攻击 - 包含特殊字符的文本,这些字符会强制应用将输入解释为命令而不是数据。

在 MATLAB 中,代码注入攻击最有可能针对 XML、JSON、SQL 和其他类似类型的结构化输入。如果您的应用接受结构化输入,请咨询您的 IT 或安全团队,获取有关如何清理该输入的建议。允许用户直接输入任何类型的代码(例如 MATLAB、Java® 或 JavaScript®)进行立即评估永远不是一个好主意。

清理从文件读取的数据

从文件读取数据会使应用程序面临与收集交互式用户输入相同类型的风险。为此,可以采取同样的对策。此外,您还可以使用加密安全散列算法对文件进行数字指纹识别,从而保护只读数据文件免遭篡改。

尽量减少文件系统写入操作

将您的应用程序限制为只读访问可大大降低与您的应用程序相关的潜在风险。如果您必须写入文件系统,请记住,如果多个用户同时访问它,服务器将同时运行您的应用程序的多个副本。您必须通过使用运行时生成的唯一文件名或使用通常可以处理多个同时访问的数据库来管理同时写入。如果没有正确管理同时写入,则可能会发生数据损坏。

验证第三方代码的可信度

如果您的应用程序包含 MATLAB 文件、共享库、Java 类或第三方开发的任何其他类型的代码,则必须确保该代码不含病毒、蠕虫、特洛伊木马和其他基于 Web 的攻击和渗透媒介。您可以与代码作者以及您的 IT 和安全人员讨论这个问题。对于二进制文件或 Java 类,请考虑在将其包含在已部署的应用程序中之前在代码上运行病毒扫描程序或其他安全软件。

降低暴露程度

减少暴露的一种方法是将应用程序的运行时间限制在需要时。例如,不要从桌面连续运行它。

另请参阅

主题