我正在构建的页面与另一个系统的java api交互,以通过命令行检索数据。这是从PHP触发的,但需要在每次调用时发送有效的用户名和密码。
我不想将用户名和密码存储在文件或cookie中,因为我认为没有办法安全地这样做。但是,我也不想让我的用户多次输入他们的凭据。
我建议做的是询问用户名和密码一次,并将它们存储在我的php中的全局变量中,使用include
确保所有其他php文件都可以访问它们。
我的问题是,这样做是否安全,或者有人能够查看变量的状态并发现用户名和密码?
答案 0 :(得分:1)
变量只会在脚本运行期间“设置”,在脚本运行之后,它们将是设置为默认值的值。 IE浏览器。如果您重新加载页面,“存储的数据”将会消失。
看看会话,可能是最好的解决方案。
答案 1 :(得分:1)
您必须使用会话。 HTTP是无状态协议。如果您有多个客户端的多个请求,并且您希望将其设置为有状态(请记住谁在请求),则需要使用基于会话的解决方案:将session-id放在客户端系统上的cookie中,发送此cookie到每个请求的应用程序,并找出与此会话ID相关联的数据。
我知道你想避免在cookie中“存储用户名和密码”。但是我绝对不确定你是否知道在php管理的基于会话的解决方案中你的会话数据没有在cookie中安全。它们无法在整个cookie中读出。实际上,只有session-id保存在cookie中。然后,您的服务器管理会话ID与$_SESSION
中的所有数据之间的引用(仅保存在服务器端!) - 您的用户无法猜测将哪种数据放入其会话中仅仅是因为他读出饼干值。
此处唯一的安全风险是会话劫持:另一个人可能会试图窃取您的客户cookie来接管他的会话。但是有针对这种情况的解决方案,只需检查它们,您将拥有一个安全的基于会话的解决方案。
请记住:如果涉及到安全性,请始终尝试优先考虑经过验证的设计模式,而不是开发自己的东西。