我一直想知道我创建的登录系统是否容易受到攻击。
与许多其他程序员一样,我也使用会话来保存特定的令牌令牌以了解登录状态。 Cookie用于保存用户名或甚至保存状态。
我想知道的是,这是正确的方法吗?有没有比这更好的方法?
答案 0 :(得分: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']);
}
答案 1 :(得分:0)
我认为您使用https是否重要:如果您使用的是http而不是https,那么系统会有许多漏洞:例如:重播,中间人/接力。
答案 2 :(得分:0)
常见PHP登录系统的替代方案是HTTP身份验证。这不需要使用会话/ cookie。特别是HTTP摘要式身份验证比未加密的< form>更安全。登录。 (大多数共享托管服务提供商不提供SSL。如果,大多数FLOSS webapps很少设置它。)
然而,存在一些可用性缺点,只能通过使用大量DHTML / AJAX来缓解这些缺点。它会略微降低服务器性能。最重要的是:对于大多数程序员来说,实现起来太难了。
如果一个简单的PHP登录系统就足够了,取决于你的应用程序的类型。