繁体   English   中英

创建登录系统的最佳方法是什么?

[英]What is the best approach of creating a login System?

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

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

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

您可以在会话上创建自己的自定义检查。 确保它是由相同的用户代理和相同的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']);
}

我认为是否使用https很重要:如果使用http而不是https,则系统存在许多漏洞:例如重播和中间人/中继。

常见的PHP登录系统的替代方法是HTTP身份验证。 这不需要使用会话/ cookie。 特别是HTTP Digest身份验证比未加密的<form>登录更为安全。 (大多数共享托管服务提供商不提供SSL。如果这样,大多数FLOSS Web应用程序都很少设置它。)

但是,存在一些可用性缺陷,只有通过大量使用DHTML / AJAX才能缓解这些缺陷。 而且会稍微降低服务器性能。 最重要的是:对于大多数程序员而言,实施正确的做法太困难了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM