Php 通过URL传递的盐渍哈希,用于无cookie的持久登录
我正在制作一个脚本,其他人将在他们的网站上。它是为对PHP了解有限的人设计的,因此他们所要做的就是包含()脚本并设置一些配置变量。这意味着可能已经发送了头,因此使用会话可能不起作用。我建议他们在自己的脚本中调用session_start,但我也需要一个后备选项 我已经有了一个隐藏的输入来处理表单,但是我还需要链接,以便在它们的URI中附加一个查询字符串来标识会话。但是,如果散列仅基于密码+salt,则存在安全风险:登录的用户可能会单击外部链接,而外部站点的所有者可能会在其引用者日志中看到带有散列的URI。他们所要做的就是使用散列,然后登录Php 通过URL传递的盐渍哈希,用于无cookie的持久登录,php,hash,login,Php,Hash,Login,我正在制作一个脚本,其他人将在他们的网站上。它是为对PHP了解有限的人设计的,因此他们所要做的就是包含()脚本并设置一些配置变量。这意味着可能已经发送了头,因此使用会话可能不起作用。我建议他们在自己的脚本中调用session_start,但我也需要一个后备选项 我已经有了一个隐藏的输入来处理表单,但是我还需要链接,以便在它们的URI中附加一个查询字符串来标识会话。但是,如果散列仅基于密码+salt,则存在安全风险:登录的用户可能会单击外部链接,而外部站点的所有者可能会在其引用者日志中看到带有散列
因此,我想以一种时间敏感的方式对散列进行加盐,将会话时间限制为10分钟。我不知道该怎么做。当然,我可以使用time()对其进行加密,但是如何仅根据哈希检查会话的有效期?这听起来真是个糟糕的主意。而且也很复杂。我绝对不会推荐它。您可能可以使用以下内容:
if (session_id() == "") session_start();
上面将基本检查会话是否已启动,否则将启动会话
由于您计划向用户分发,我觉得整个方法有点不合适。我不确定您希望从中获得什么,但是您可以尝试使用一个JS,它可以在每页调用您的PHP文件。这将使你更容易。如果你能详细说明你正在开发什么样的应用程序,那么我可能会更好地帮助你。我在大众消费软件应用程序方面有很多经验,与您所做的类似。在10分钟后过期会话并不能保护您的用户免受会话劫持攻击。它只能通过每10分钟强制一次登录来成功骚扰用户。您提出的方案仍然存在各种漏洞。你的加密密码仍然可以通过许多其他渠道泄露给外界;数据包嗅探、中间代理、用户通过电子邮件相互发送指向页面甚至保存的html的链接,仅举几例。我建议您不要在没有成为该领域专家的情况下自行开发安全框架。即便如此,这也是一个已解决的问题。只需使用已知的可信解决方案。web安全中有许多微妙之处很容易搞乱。这不一定是个坏主意,但如果做得不正确,则很危险。事实上,它是一种相当常见的多域单点登录实现。一些基本规则:
这只是一个简单的建议,但是您是否可以将IP地址包含在密码和salt中?它不会创建依赖时间的散列,但读取日志并能够看到这些散列的人不太可能与合法用户位于同一IP地址,这使得散列对他们来说基本上是无用的。是的,但合法用户的IP可能会有所不同,因为大多数人不会从ISP获得静态IP。谢谢。在我最初的帖子中,我提到如果已经发送了标题(即一些HTML已经输出),会话_start()可能无法工作。尽管如此,我还是找到了一种不需要这些垃圾的方法,只需确保登录表单提交到脚本本身(而不是includer),然后重定向回includer即可使用PHP会话。奥卡姆的剃须刀又开始工作了。我的错,我错过了那部分。无论如何,我希望你做一些有用的事情,包括在这种方式。祝你好运。谢谢,你在一定程度上说服了我放弃这个想法,这个想法现在越来越混乱了。