1

我总是想知道我创建的登录系统是否容易受到攻击。

与许多其他程序员一样,我也使用会话来保存特定的令牌令牌以了解登录状态。用于保存用户名甚至有时保存状态的 Cookie。

我想知道的是,这是正确的方法吗?有没有比这更好的方法?

4

3 回答 3

1

您可以在会话上创建自己的自定义检查。确保它是由相同的用户代理从相同的 IP 地址创建的。

除此之外,会话非常可靠。

在登录部分,您将执行以下操作:

$_SESSION['_user_agent'] = $_SERVER['HTTP_USER_AGENT'];
$_SESSION['_remote_addr'] = $_SERVER['REMOTE_ADDR'];

然后您可以检查每个请求:

function sessionIsOK ()
{
    return ($_SESSION['_user_agent'] == $_SERVER['HTTP_USER_AGENT'] &&
        $_SESSION['_remote_addr'] == $_SERVER['REMOTE_ADDR']);
}
于 2010-05-28T01:08:06.037 回答
0

我认为你是否使用 https 很重要:如果你使用的是 http 而不是 https,那么系统就有很多漏洞:例如重播和中间人/中继。

于 2010-05-28T00:05:41.697 回答
0

常见 PHP 登录系统的替代方案是 HTTP 身份验证。这不需要使用会话/cookie。特别是 HTTP Digest 身份验证比未加密的 <form> 登录更安全。(大多数共享主机提供商不提供 SSL。如果,大多数 FLOSS webapps 很少设置它。)

但是,存在一些可用性缺陷,只能通过大量使用 DHTML/AJAX 来缓解。它会稍微降低服务器性能。最重要的是:对于大多数程序员来说,实现它太难了。

如果一个简单的 PHP 登录系统就足够了,这取决于您的应用程序的类型。

于 2010-05-28T00:13:27.440 回答