7 php apache security session shared-hosting
我使用SQLite和存储的会话编写了一个PHP Web应用程序filesystem.
这在功能上很好,而且维护成本低.但是,现在它需要在共享主机上运行.
共享主机上的所有Web应用程序都作为同一用户运行,因此我的用户的会话数据容易受到攻击,数据库,代码等也是如此.
许多建议在存储会话DBMS,例如MySQL在这种情况下.所以起初我以为我会这样做,并将SQLite数据移入其中MySQL.但后来我意识到MySQL凭据需要Web应用程序用户可读,所以我回到原点.
我认为最好的解决办法是使用PHP一个CGI所以它运行每个Web应用程序为不同的用户.这听起来很棒,但我的主人并没有这样做mod_php.启用此功能,管理员的观点是否存在任何缺陷?(性能,向后兼容性等)?如果没有,那么我会要求他们启用此功能.
否则,在这种情况下,我能做些什么来保护我的数据库和会话数据?
只要您的代码以共享 Web 用户身份运行,存储在服务器上的任何内容都将容易受到攻击。任何其他用户都可以编写 PHP 脚本来检查服务器上的任何可读文件,包括您的数据和 PHP 代码。
如果您的托管提供商允许,在不同用户下以 PHP 作为 CGI 运行会有所帮助,但我预计性能会受到显着影响,因为每个请求都需要创建一个新进程。(您可以将 FCGI 视为性能更好的替代方案。)
另一种方法是根据用户提供的内容设置 cookie,并使用它来加密会话数据。例如,当用户登录时,获取用户名、密码(由他们提供的)和当前时间的哈希值,使用哈希值加密会话数据,设置包含哈希值的 cookie。在下一个请求中,您将取回 cookie,然后可以使用它来解密会话数据。但请注意,这只会保护当前会话数据;您的用户表、其他数据和代码仍然容易受到攻击。
在这种情况下,您需要考虑共享托管提供的安全性降低,决定是否可以接受低成本共享托管的权衡。这将取决于您的应用程序,并且可能与其试图想出一种复杂的(甚至可能不是非常有效的)方法来增加安全性,您最好还是接受风险。
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |