我正在编写一个简单的PHP脚本来访问Foursquare API。 PHP将始终访问相同的Foursquare帐户。 目前,我的登录信息已硬编码在脚本中。 保护此信息的最佳方法是什么?
如果我遵循此线程的建议,则应将登录信息放在网站根目录之外的配置文件中:
如何在PHP中保护数据库密码?
这是最好的建议吗? 还是有更好的方法来保护登录信息?
当然,最好的方法是根本不存储它。
如果不能这样做,请将其存储在PHP文件中(作为变量)应确保不会将其发送到客户端。如果您对Web服务器突然停止解释PHP感到疑惑,可以将其放在文档根目录之外或拒绝访问的单独文件中(例如,通过.htaccess指令访问)。
+1-最好将其放在文档根目录之外的文件中。
(这里有特定于Linux的详细信息,因此,如果这不是您的平台,请原谅...)
如果您正在apache上运行并且可以访问配置文件(共享主机可能不是这种情况),则可以在VirtualHost配置(或httpd.conf或其他随附的配置文件)中放置如下一行:
SetEnv FOURSQUARE_PW"your password"
然后,您的php脚本可以在$_SERVER['FOURSQUARE_PW']处对其进行访问。
这样做的好处是您可以使配置文件只能由root用户读取,因为apache将使用init.d作为root用户启动。
我没有看到真正的优势。 您想阻止谁读取文件? 恶意的PHP脚本? 这些对象要做的第一件事通常是print_r($_SERVER)-不好意思。
我承认它有一个小的优势(如果有的话),具体取决于环境。 Web堆栈可能是最有可能破坏服务器的方法,但可能还有其他方法。 如果攻击者通过其他方式获得访问权限,则他们可能能够读取但不能写入网站文件...
将其作为变量存储在.php文件中,作为根目录之外的根目录中的一个文件名,这是不容易猜到的,这是一种确保凭证安全的合理安全方法。但是,如果您完全可以避免将其存储在服务器上,那将是最好的选择。提供一个登录页面,以根据需要将该信息输入以用于会话,然后在不再需要该信息时将其丢弃。