本地化消息可能存在安全风险

时间:2011-11-30 04:06:01

标签: security localization

如果Web应用程序允许用户提供翻译消息以便将应用程序本地化为给定的语言或区域设置,那么这涉及到哪些潜在的安全风险。 [除了明显的社会工程]

这些转换消息通常是某种格式的键值对的集合,具体取决于语言/库等。例如,许多OSS PHP应用程序中的PHP数组文件,使用gettext的应用程序的getetxt .po文件, Rails中的Yaml文件以及许多其他文件。

此类翻译数据随后用于在网站可用的区域设置列表中提供新的区域设置。

1 个答案:

答案 0 :(得分:1)

说实话,这是一个奇怪的问题。我将假设您已阅读并理解OWASP top 10。我假设您知道如何保护自己的服务器免受攻击。

在我看来,对这个翻译系统最明显的攻击是持久的XSS,它允许攻击者使用这个数据集破坏每个网站。只是说“我们htmlencode值”是不够的。如果要将这些数据集提供给第三方,则不能指望所有这些数据集都能正确清理数据。更糟糕的是,XSS是an output problem,您不能HTML encode整个数据集并期望它是100%安全的,因为您不知道如何在HTML中使用数据文献。问题是数据可能最终在脚本标记或事件中,然后可以完全取消对html编码的保护。当我看到有人使用strip_tags()试图阻止xss时,我总是轻笑,这只是错误的做法。

总之,问题确实没有100%解决方案,但这会阻止大多数xss:

$var=htmlspecialchars($var,ENT_QUOTES,"UTF-8");
$var=rtrim($var,"\\");

显然,rtrim()用于帮助防止脚本标记中的xss。如果字符串以反斜杠结尾,则可以突破带引号的字符串,反斜杠与引号一样危险。