PHP - 存储和检索密码 from/in 一个 ini 文件

PHP - store and retrieve a password from/in an ini file

我正在使用 PHP 构建一个简单的设备配置助手。设备将从 ini 文件中提取其配置数据。向文件写入数组数据和从文件读取数组数据没有问题,工作正常。
我的问题是:文件的一部分包含 SMTP 邮件服务器数据,包括用户名和密码。一旦将包含双引号的密码写入文件,读取它自然会导致异常(假设 smtp_auth_pw="pass5"word":将导致 syntax error, unexpected 'w')。

使用数据库是不可行的。对我来说唯一可行的解​​决方案是:

这两个选项似乎都不适合我。关于如何处理 ini 文件中的不安全字符串的建议?

首先,将密码存储在明文文件中是个糟糕的主意,但这不是你的问题,所以假设你已经考虑了安全风险,我建议使用 urlencode()转换引号和冒号等字符,并且可以使用 urldecode()

轻松解码

Escape all unsafe characters, tell the OS software developers to unescape them on their end

是的,这就是需要做的。您正在编写 INI 格式的文件,这意味着您需要符合 INI 语法。

(Much complexity for a single value, possibly misunderstandings between devs)

不,这并不复杂。每当您以特定格式(此处为:INI)读取数据时,都需要根据该格式的规范(包括任何和所有转义规则)进行读取。如果您使用一个库来读取 and/or 写入该格式,这些转义规则应该已经被该库透明地考虑。遵守 INI 转义规则应该绝对没有开销,开发人员之间也没有误解,因为这是处理任何和所有专用文本格式的标准做法。

另见 The Great Escapism (Or: What You Need To Know To Work With Text Within Text)