我有一个分类广告网站,我即将创建该网站的会员登录部分。
我不需要任何先进的东西,只是安全!
这就是我在功能方面所需要的:
这就是我的想法:
创建一个MySql(我使用MySql btw)表,其中包含用户名,密码等。
然后在PHP中创建一个“SESSION”并设置一个cookie来记住用户。 这个cookie里面会有这样的值:
md5(IP.username.secret_word)
我在每个页面的顶部进行比较,以便用户实际上是同一个用户。
接下来我需要一个注销页面,我想只是删除这个cookie并销毁会话。应该够了吗?
对于仍然登录的功能,我将使用与第一个记住我相同的方法,即检查cookie。
在这之前我还需要考虑一下吗?
Sql注入,黑客攻击,安全漏洞?
这不是一家银行或需要很多安全保障的东西,但我知道要破解它并不容易。
我不确定的一件事是会话cookie。它与普通的cookie有什么不同吗?当我使用“记住”功能时,我应该设置这个cookie吗?
另外,最后一件事:如果说100个用户同时登录,则意味着100个会话正在运行,这会降低网站的性能吗? (猜是的)。
纠正我,给我一些关于如何做得最好的建议和信息?
由于
答案 0 :(得分:3)
我的建议是避免尝试重新发明这个特定的轮子。良好的安全性 hard 可以做,但有一些优秀的库可供您完成这项工作,例如Zend Auth
答案 1 :(得分:0)
你应该看一下实现openID - http://openid.net/
答案 2 :(得分:0)
在这之前我还需要考虑一下吗?
Sql注入,黑客攻击,安全漏洞?
是。你真的希望我们解释如何避免所有这些吗?
MD5(IP.username.secret_word)
请勿以任何方式将客户端IP地址用作标识符。虽然您建议的方法不会被多个通过同一代理连接的用户破坏,但它对负载均衡代理群集后面的用户不起作用。
我当然建议为会话使用单独的cookie并“记住我”功能(前者应该是会话cookie,后者是长期到期,两者都只有HTTP)。原因应该是显而易见的。不要发明自己的方法来命名会话cookie - 它们是随机的原因。对于首选项,至少实现SSL上的登录页面,并在记住我的cookie上设置安全标志。 (这意味着在没有经过身份验证的会话中,您将不得不重定向到HTTPS页面以检查RemeberMe cookie。)
这意味着100个会话正在运行,这会降低网站的性能吗? (猜是)
是的,当然会 - 但差异会很小,以至于在达到10,000多个会话之前你将无法衡量它。
答案 3 :(得分:-1)
你快到了。
在放入数据库之前,只需加密(哈希)密码即可。当用户忘记密码时,你不能给他们原来的密码,所以为他们生成一个随机密码,然后让他们改变密码。
您可以在登录页面上使用SSL或其他安全上网方法。
您可以将登录限制为5分钟,CAPTCHA或类似的3次尝试,以防止自动机器人。
在数据库中记录IP,时间和登录尝试以及其他事项以供将来调查。
使用Mysqli或其他一些OOP方法进行数据库连接,并查询可能的注入攻击。