0

所以我让example-google.php脚本工作,登录后它会抛出默认用户字符串已登录。但我的问题是这如何保护任何东西?

假设我有 //127.0.0.1/example-google.php 并在登录成功后添加了一个 href 到 //127.0.0.1/abc.php 。

那么是什么阻止了某人只输入 127.0.0.1/abc.php?授予我可以使用 $_SESSION 来验证“某人”已登录。但这就足够了吗?有没有办法重新验证尝试访问 abc.php 的用户在从其他页面抛出时是否真正登录?

4

2 回答 2

1

通常,这个想法是您确实使用会话存储。

例如,在我的站点中,我有一个使用 Steam 社区的 OpenID 登录。当用户登录时,在 LightOpenID 示例中的模式/验证检查等之后,我将他们的唯一标识符保存在会话存储中(在这种情况下是 SteamID,在你的情况下可能是电子邮件地址),然后可以自由使用它用于后续请求。

由于会话存储是服务器端的,因此用户不能在没有获取会话 cookie 的情况下模拟另一个(会话劫持是另一个主题,其他人可以更详细地讨论,但如果需要,我会试一试),但是大多数攻击都可以通过存储和验证请求的 IP 地址来击败。

于 2013-05-27T21:59:30.647 回答
0

我保留了几个 mysql 表(一个用于会话,一个用于用户信息)并将会话信息存储在会话表中,并包含对用户表的引用。当用户使用其 OID 提供商成功登录时,他们会在提供商确认后被发送回我的站点。从那时起,我通过他们的会话 ID 跟踪我的用户。

如果他们选择注销,我会擦除会话,但会保留网站上评论/帖子的用户信息以跟踪谁说了什么。

我实际上放置了一个指向“?login = {service}”的链接,它将请求发送到OID提供程序并重定向回该页面,并在从提供程序返回时成功登录并存储适当的信息并将用户重定向回他们点击任何{服务}的“登录”按钮的原始页面。如果通过 OID 验证,您只会显示“仅限成员”内容。如果没有任何方式来确认 ID,您不会在 abc.php 创建标准 HTML 页面,我认为标头重定向很重要,因为它会清除地址中显示的 URL。

于 2013-06-15T09:51:46.683 回答