gpt4 book ai didi

php - 在 PHP 共享主机上保护数据库和 session 数据

转载 作者:可可西里 更新时间:2023-11-01 12:56:21 25 4
gpt4 key购买 nike

我使用 SQLite 和存储在 文件系统 上的 session 编写了一个 PHP 网络应用程序。

这在功能上很好,而且维护成本低。但是,现在它需要在共享主机上运行。

共享主机上的所有 Web 应用程序都以同一用户身份运行,因此我用户的 session 数据易受攻击,数据库、代码等也是如此。

在这种情况下,许多人建议将 session 存储在 DBMS 中,例如 MySQL。所以起初我以为我会这样做,并将 SQLite 数据也移动到 MySQL 中。但后来我意识到 Web 应用程序用户需要能够读取 MySQL 凭据,所以我回到原点。

我认为最好的解决方案是将 PHP 用作 CGI,这样它就可以作为每个 Web 应用程序的不同用户运行。这听起来不错,但我的主机并没有这样做,它使用 mod_php。从管理员的角度来看,启用此功能是否有任何缺点? (性能、向后兼容性等)?如果没有,那么我会要求他们启用此功能。

否则,在这种情况下我能做些什么来保护我的数据库和 session 数据?

最佳答案

只要您的代码以共享网络用户的身份运行,存储在服务器上的任何内容都将容易受到攻击。任何其他用户都可以编写 PHP 脚本来检查服务器上的任何可读文件,包括您的数据和 PHP 代码。

如果您的托管服务提供商允许,在不同用户下将 PHP 作为 CGI 运行会有所帮助,但我预计性能会受到显着影响,因为每个请求都需要创建一个新进程。 (您可以将 FCGI 视为性能更好的替代方案。)

另一种方法是根据用户提供的内容设置 cookie,并使用它来加密 session 数据。例如,当用户登录时,获取用户名、密码(由他们提供)和当前时间的哈希值,使用哈希值加密 session 数据,设置包含哈希值的 cookie。在下一个请求中,您将取回 cookie,然后可以使用它来解密 session 数据。但是请注意,这只会保护当前 session 数据;您的用户表、其他数据和代码仍然容易受到攻击。

在这种情况下,考虑到它提供的安全性降低,您需要决定是否可以接受共享托管的低成本权衡。这将取决于您的应用程序,与其试图想出一种复杂的(甚至可能不是很有效的)方法来增加安全性,您最好还是接受风险。

关于php - 在 PHP 共享主机上保护数据库和 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/131017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com