加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

保护PHP共享主机上的数据库和会话数据

发布时间:2020-12-13 18:00:54 所属栏目:PHP教程 来源:网络整理
导读:我使用SQLite和存储在文件系统上的会话编写了一个 PHP Web应用程序. 这在功能上很好,而且维护成本低.但是,现在它需要在共享主机上运行. 共享主机上的所有Web应用程序都作为同一用户运行,因此我的用户的会话数据容易受到攻击,数据库,代码等也是如此. 许多人建
我使用SQLite和存储在文件系统上的会话编写了一个 PHP Web应用程序.

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

共享主机上的所有Web应用程序都作为同一用户运行,因此我的用户的会话数据容易受到攻击,数据库,代码等也是如此.

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

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

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

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

如果您的托管服务提供商允许它,在不同的用户下以PHP作为CGI运行会有所帮助,但我预计会有很大的性能损失,因为每个请求都需要创建一个新进程. (您可以将FCGI视为表现更佳的替代方案.)

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读